我是 android 编程的新手,并试图制作一个单一的选择按钮组。
例如,我的应用程序中有 3 个按钮,当单击一个按钮时,其他按钮应未单击且未着色。
我怎样才能有效地做到这一点?
只是给一个提示:(比如我应该使用什么类或方法..?
我是 android 编程的新手,并试图制作一个单一的选择按钮组。
例如,我的应用程序中有 3 个按钮,当单击一个按钮时,其他按钮应未单击且未着色。
我怎样才能有效地做到这一点?
只是给一个提示:(比如我应该使用什么类或方法..?
你是这个意思吗:
Button myButton1;
Button myButton2;
Button myButton3;
myButton1 = (Button) findViewById(R.id.button1);
myButton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
myButton1.setBackgroundColor(Color.Green);
myButton2.setBackgroundColor(Color.Gray);
myButton3.setBackgroundColor(Color.Gray);
}
});
myButton2 = (Button) findViewById(R.id.button1);
myButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
myButton2.setBackgroundColor(Color.Green);
myButton1.setBackgroundColor(Color.Gray);
myButton3.setBackgroundColor(Color.Gray);
}
});
myButton3 = (Button) findViewById(R.id.button1);
myButton3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
myButton3.setBackgroundColor(Color.Green);
myButton1.setBackgroundColor(Color.Gray);
myButton22.setBackgroundColor(Color.Gray);
}
});
试试这个方法,希望这能帮助你解决你的问题。
/drawable/radio_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" android:state_checked="true" android:state_pressed="false"/>
<item android:drawable="@android:color/black" android:state_checked="false" android:state_pressed="false"/>
<item android:drawable="@android:color/white" android:state_checked="true" android:state_pressed="true"/>
<item android:drawable="@android:color/black" android:state_checked="false" android:state_pressed="true"/>
</selector>
/drawable/radio_text_color_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/black" android:state_checked="true" />
<item android:color="@android:color/black" android:state_pressed="true"/>
<item android:color="@android:color/white" />
</selector>
/layout/customradiobutton.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/darker_gray"
android:gravity="center">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@drawable/radio_selector"
android:text="Radio1"
android:textColor="@drawable/radio_text_color_selector"
android:checked="true"
android:padding="10dp"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@drawable/radio_selector"
android:text="Radio2"
android:layout_marginLeft="5dp"
android:textColor="@drawable/radio_text_color_selector"
android:padding="10dp"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@null"
android:background="@drawable/radio_selector"
android:text="Radio3"
android:layout_marginLeft="5dp"
android:textColor="@drawable/radio_text_color_selector"
android:padding="10dp"/>
</RadioGroup>
</LinearLayout>
我也不是经验丰富的开发人员。但答案将取决于你想要达到的目标。您可以使用 andruboy 提到的单选组,但我个人不喜欢单选按钮的外观,所以我经常使用看起来像这样的按钮创建自己的单选组。
myButton1 = (ImageButton) findViewById(R.id.button1);
myBytton2 = (ImageButton) findViewById(R.id.button2);
myBytton3 = (ImageButton) findViewById(R.id.button3);
// this variable indicate which button was clicked as last, u can use this info for next action
int whichButtonClicked = 1;
myButton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
whichButtonClicked = 1;
myButton1.setBackgroundColor(Color.Red);
myButton2.setBackgroundColor(Color.Gray);
myButton3.setBackgroundColor(Color.Gray);
}
});
myButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
whichButtonClicked = 2;
myButton1.setBackgroundColor(Color.Gray);
myButton2.setBackgroundColor(Color.Red);
myButton3.setBackgroundColor(Color.Gray);
}
});
第三个按钮代码看起来很相似。
我是从头开始写的,如果有些东西不起作用,请告诉我,我稍后会测试它。
我希望这个答案能帮助你