单击事件更改按钮背景颜色?
Change button background color on click event?
当我在 activity 上声明一个按钮并设置 android:onClick
属性时,activity 会在按下时自动更改按钮的背景颜色。
现在我在片段上有了一个按钮。因为我不能在这里使用 android:onClick
,所以我用 onClickListener
来代替。该按钮有效,但它不再改变其样式。
我必须手动执行此操作吗?怎么样?
我们需要一个 XML 文件,drawable
选择器。我用 res/drawable/bg_button.xml
:
命名了这个文件
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:drawable="@drawable/bg_button_pressed"/>
<item android:state_pressed="true" android:drawable="@drawable/bg_button_pressed" />
<item android:drawable="@drawable/bg_button_normal" /> <!-- normal state -->
</selector>
对于res/drawable/bg_button_pressed.xml
:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="color when pressed" />
</shape>
新建一个XML文件,命名为res/drawable/bg_button_normal.xml
,复制上面的代码。然后,将 android:color
替换为正常颜色,即当按钮处于正常状态时。
最后:
<Button
android:id="@+id/..."
android:text="@string/..."
android:background="@drawable/bg_button"/>
如果您没有 res/drawable
文件夹,请创建一个新文件夹。
试试这个,
引用你的按钮
yourButton = (Button) <fragment name>.findViewById(R.id.<button id>);
yourButton.setOnClickListener(this);
在您的点击事件中,
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.yourButton:
yourButton.setBackgroundColor(getActivity().getResources().getColor(<colour code>));
break;
default:
break;
}
}
当我在 activity 上声明一个按钮并设置 android:onClick
属性时,activity 会在按下时自动更改按钮的背景颜色。
现在我在片段上有了一个按钮。因为我不能在这里使用 android:onClick
,所以我用 onClickListener
来代替。该按钮有效,但它不再改变其样式。
我必须手动执行此操作吗?怎么样?
我们需要一个 XML 文件,drawable
选择器。我用 res/drawable/bg_button.xml
:
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:drawable="@drawable/bg_button_pressed"/>
<item android:state_pressed="true" android:drawable="@drawable/bg_button_pressed" />
<item android:drawable="@drawable/bg_button_normal" /> <!-- normal state -->
</selector>
对于res/drawable/bg_button_pressed.xml
:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="color when pressed" />
</shape>
新建一个XML文件,命名为res/drawable/bg_button_normal.xml
,复制上面的代码。然后,将 android:color
替换为正常颜色,即当按钮处于正常状态时。
最后:
<Button
android:id="@+id/..."
android:text="@string/..."
android:background="@drawable/bg_button"/>
如果您没有 res/drawable
文件夹,请创建一个新文件夹。
试试这个,
引用你的按钮
yourButton = (Button) <fragment name>.findViewById(R.id.<button id>); yourButton.setOnClickListener(this);
在您的点击事件中,
@Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.yourButton: yourButton.setBackgroundColor(getActivity().getResources().getColor(<colour code>)); break; default: break; } }