gpt4 book ai didi

android - 将带有状态的背景可绘制对象设置为 android 按钮

转载 作者:太空宇宙 更新时间:2023-11-03 13:29:20 25 4
gpt4 key购买 nike

我正在构建一个多项选择问卷 android 程序。我的 onCreate() 方法中有以下内容

btnArray = new Button[5];
btnArray[0] = (Button) findViewById(R.id.bOp1);
btnArray[1] = (Button) findViewById(R.id.bOp2);
btnArray[2] = (Button) findViewById(R.id.bOp3);
btnArray[3] = (Button) findViewById(R.id.bOp4);
btnArray[4] = (Button) findViewById(R.id.bOp5);

Typeface othmanyFont = Typeface.createFromAsset(getAssets(),
"fonts/amiri.ttf");
Drawable shape = getResources().getDrawable(R.drawable.optionbutton);

for(int i=0;i<5;i++){
btnArray[i].setTypeface(myFont);
((Button)btnArray[i]).setBackgroundDrawable(shape); //Button-4 only turns red
btnArray[i].setOnClickListener(this);
}

可绘制资源“optionbutton.xml”为“按下状态”定义了红色渐变,为其他状态定义了灰色。看起来如下

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="#bf1d00"
android:endColor="#801300"
android:angle="270" />
<corners android:radius="10dp" />
<stroke
android:width="1dp"
android:color="#71c2eb" />
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#FFFFFF"
android:endColor="#999"
android:angle="270" />
<corners android:radius="10dp" />
<stroke android:width="1px" android:color="#0070b7" />
</shape>
</item>
</selector>

选择器确实有效,但仅适用于最后一个应用的按钮。无论按下 5 中的哪个按钮,最后一个(不是按下的那个)按钮只会将其背景设为红色。

作为调试步骤:我尝试展开 for 循环并更改应用背景的顺序,最后应用的按钮仅获得红色背景:

((Button)btnArray[0]).setBackgroundDrawable(shape);
((Button)btnArray[1]).setBackgroundDrawable(shape);
((Button)btnArray[2]).setBackgroundDrawable(shape);
((Button)btnArray[4]).setBackgroundDrawable(shape);
((Button)btnArray[3]).setBackgroundDrawable(shape); //Button-3 only turns red

这令人困惑!我的实现有什么问题?

最佳答案

您可以在一个 xml 中设置形状,在另一个 xml 中设置按钮状态,然后尝试在此处为按钮设置 xml 以获得不同的状态

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/save_button_active" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/save_button_active" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/save_button_active" android:state_focused="true"/>
<item android:drawable="@drawable/save_button_inactive" android:state_focused="false" android:state_pressed="false"/>
</selector>

关于android - 将带有状态的背景可绘制对象设置为 android 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15287083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com