按下时按下奇怪的行为

时间:2013-12-23 14:23:05

标签: android button background

我的Android活动底部有一些按钮,这些按钮有一个按下,三个默认发布,

enter image description here

当他们中的任何一个按下它时,背景应该改变为按下按钮的背景,其他背景应该改变为释放按钮的背景,但是当点击任何按钮时我得到了结果:

enter image description here

这是我的代码:

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>

3 个答案:

答案 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将更改为您的活动名称