如何在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" />
答案 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" />