Android的平面按钮,单击时会改变颜色

时间:2015-03-22 00:20:54

标签: android android-layout

如何在Android中制作一个单击按钮时更改背景颜色的平面按钮? 样式应该是borderlessButtonStyle,但我不知道如何在点击时用xml改变颜色

<Button android:id="@+id/email_sign_in_button"
        style="?android:attr/borderlessButtonStyle"
        android:text="@string/action_sign_in" 
        android:background="@android:color/white" />

3 个答案:

答案 0 :(得分:1)

我们通常不会使用xml,除非您想通过扩展Button类来制作自定义按钮小部件。一个简单的方法是:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/email_sign_in_button"
    style="?android:attr/borderlessButtonStyle"
    android:text="Sign in"
    android:background="@android:color/white"
    android:onClick="changeColor"/>

然后在你的主要活动中:

public class MainActivity extends ActionBarActivity {

    int[] colors = {
            R.color.material_blue_grey_800,
            R.color.material_deep_teal_200,
            R.color.material_deep_teal_500,
            android.R.color.white,
    };

    int counter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void changeColor(View view) {
        view.setBackgroundColor(getResources().getColor(colors[counter]));
        counter = (counter + 1) %colors.length;
    }
}

答案 1 :(得分:1)

您是指在触摸按钮时更改颜色,还是在单击后永久更改颜色?对于第一个,您将使用状态列表drawable而不是color drawable。各个州可以是颜色。有关示例,请参阅https://sermojohn.wordpress.com/2012/02/04/using-a-state-list-drawable-as-a-button-background-image/

答案 2 :(得分:0)

我找到了答案:

在drawable-mdpi map中的

应该为正常状态创建一个文件,例如:my_Button_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">
<gradient
    android:startColor="#8fbab4ba"
    android:endColor="#8fbab4ba"/>
</shape>

然后在同一个地图中触摸/点击状态的文件,例如:my_Button_clicked.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">
<gradient
    android:startColor="#fffe0202"
    android:endColor="#fffe0202"/>
</shape>

然后是一个用于定义Button Style的文件,例如。 :my_Button.xml,用于关联以前的状态属性文件:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="false"
    android:drawable="@drawable/my_Button_normal" />

<item android:state_pressed="true"
    android:drawable="@drawable/my_Button_clicked" />

最后在你的视图的xml中定义带有样式的te按钮 - &gt;扁平按钮和背景my_button:

<Button
       android:id="@+id/email_sign_in_button"
       style="?android:attr/borderlessButtonStyle"
       android:text="Ciao"
       android:background="@drawable/my_button"
       android:textColor="@android:color/white" />