我的Android活动底部有一些按钮,这些按钮有一个按下,三个默认发布,
当他们中的任何一个按下它时,背景应该改变为按下按钮的背景,其他背景应该改变为释放按钮的背景,但是当点击任何按钮时我得到了结果:
这是我的代码:
xml:
<LinearLayout
android:id="@+id/GrandThree"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginTop="10dp"
android:layout_gravity="center"
android:gravity="center"
android:orientation="horizontal"
android:background="@android:color/transparent">
<Button
android:id="@+id/BedRoom_bottom"
android:layout_width="200dp"
android:layout_height="fill_parent"
android:background="@drawable/light_bottom_buttons_pressed"
android:text="Bedroom"
android:textSize="20dp"
android:textColor="#FFFFFF"
android:layout_gravity="center"
android:layout_marginTop="3dp"
android:layout_marginLeft="3dp"
android:layout_marginBottom="3dp"
android:layout_marginRight="3dp"
android:tag="pressed"
android:clickable="true" />
<Button
android:id="@+id/livingroom"
android:layout_width="200dp"
android:layout_height="fill_parent"
android:background="@drawable/light_bottombuttons"
android:text="Living Room"
android:layout_gravity="center"
android:textSize="20dp"
android:padding="20px"
android:textColor="#FFFFFF"
android:layout_marginTop="3dp"
android:layout_marginLeft="3dp"
android:layout_marginBottom="3dp"
android:layout_marginRight="3dp"
android:tag="released"
android:clickable="true" />
<!.. then two buttons the same way ..!>
</LinearLayout>
JAVA:
// the onClickListener method for the Navigation buttons
public OnClickListener onNavigationClick = new OnClickListener() {
@Override
public void onClick(View v) {
if(v == bedRoom){
String tag = bedRoom.getTag().toString().trim();
if (tag.equals("released")) {
bedRoom.setBackgroundColor(R.drawable.light_bottom_buttons_pressed);
bedRoom.setTag("pressed");
livingRoom.setBackgroundColor(R.drawable.light_bottombuttons);
livingRoom.setTag("released");
masterBedroom.setBackgroundColor(R.drawable.light_bottombuttons);
masterBedroom.setTag("released");
kitchen.setBackgroundColor(R.drawable.light_bottombuttons);
kitchen.setTag("released");
}
}
//then another 3 blocks the same way for the other buttons
}
};
提示: light_bottombuttons&amp; light_bottom_buttons_pressed是具有渐变颜色的形状:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="30dp"/>
<gradient
android:startColor="#353535"
android:centerColor="#212121"
android:endColor="#121212" <!.. the values of the other is just upside down these values ..!>
android:angle="270"/>
</shape>
答案 0 :(得分:1)
在drawable文件夹中创建一个名为button-drawable.xml
的文件,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:@drawable/light_bottom_buttons_pressed" />
<item
android:drawable="@drawable/light_bottom_buttons_pressed" />
</selector>
为布局文件中的所有按钮添加标签。
android:background="@drawable/button_drawable"
现在,在按钮的点击监听器中,只要选择了一个新按钮,就将按钮的选择状态设置为true。
示例代码:
public OnClickListener onNavigationClick = new OnClickListener() {
@Override
public void onClick(View v) {
if(v == bedRoom){
String tag = bedRoom.getTag().toString().trim();
if (tag.equals("released")) {
bedRoom.setTag("pressed");
bedRoom.setSelected(true);
livingRoom.setTag("released");
livingRoom.setSelected(false);
masterBedroom.setTag("released");
masterBedroom.setSelected(false);
kitchen.setTag("released");
kitchen.setSelected(false);
}
}
//then another 3 blocks the same way for the other buttons
}
};
答案 1 :(得分:0)
使用单选按钮和单选按钮。 您的电台组将包含多个按钮,一次只能选择一个按钮。
答案 2 :(得分:0)
当你得到你的绘画时,你应该像下面这样做
bedRoom.setBackgroundColor(MyActivity.this.getResources().getDrawable(R.drawable.light_bottom_buttons_pressed));
MyActivity
将更改为您的活动名称