Android单击后更改背景颜色
我试图在单击时更改Button
的背景颜色,当我释放Button
时按下Button
时,我可以更改背景颜色该按钮返回到默认值颜色。我不知道该从哪里出发,我一直在试图找到解决这个问题的办法。Android单击后更改背景颜色
`
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.game.dice.MainActivity">
<Button
android:id="@+id/but1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"
android:background="@drawable/button_color"
/>
<Button
android:id="@+id/but2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 2"
android:background="@drawable/button_color"/>
</LinearLayout>
`
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@color/button_pressed"/>
<item android:state_focused="true"
android:drawable="@color/button_focused"/>
<item android:drawable="@color/button_default"/>
</selector>
这是因为默认情况下,当该按钮被触摸它将采取点击而不是焦点。如果你想要按钮被聚焦并改变它的颜色,当按下这个添加到y我们的按钮在xml中。
android:focusableInTouchMode="true"
在你的绘制,最后<item>
表示默认状态。改变这一点。
编辑:
对不起,我不好错。无论您使用什么,您都必须在Java或Kotlin中执行此操作。这是更多的业务逻辑,而不是“观点”。
尝试这样的:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:color="@color/button_pressed" />
<item android:state_focused="true" android:state_pressed="true" android:color="@color/button_pressed" />
<item android:state_focused="false" android:state_pressed="true" android:color="@color/button_default" />
<item android:color="@color/button_pressed" />
试试这个
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/on_the_go"
android:color="@color/colorText" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/on_the_go_selected"
android:color="@color/colorSkyBlue"/>
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/on_the_go"
android:color="@color/colorText"/>
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/on_the_go_selected"
android:color="@color/colorSkyBlue"/>
<!-- Pressed -->
<item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/on_the_go"
android:color="@color/colorText"/>
<item android:state_pressed="true" android:drawable="@drawable/on_the_go_selected"
android:color="@color/colorSkyBlue" />
</selector>
竭诚为您服务
这是在Java中如何做到这一点的快速设置;
private Button mButton;
mButton = (Button) findViewById(R.id.but1);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mButton.setBackgroundColor(Color.BLACK);
}
});
你基本上做了一个ClickListener,只要单击按钮就会做出反应。从这里我们将按钮背景颜色更改为黑色。如果您希望每次点击都随时更改,则可以应用更多逻辑。
我喜欢试图使用Java的想法, – morefaster
我喜欢试图使用Java的想法,我是新来的Android,我敢肯定我在这里失去了一些东西,但我不知道是什么,onClick看起来像这样** onClick =“mButton”; **。我是否应该编辑问题中的代码以反映我的更新代码,或者在这里认为是不好的形式? – morefaster
我给你的代码就是你需要的一切,下面的文字只是对代码的描述。我认为这是最简单的,如果你在你的文章底部添加一个**编辑:**,并把你的新代码放在那里。 –
你试过这个吗?
myButton.setBackgroundColor(Color.RED);
此代码位于您的onClick方法中。
,如果你wan't重置按钮的背景颜色为默认不是使用下面的代码试试这个
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
button.setBackgroundColor(ContextCompat.getColor(getActivity(),R.color.colorBlack));
}
});
注意
button.setBackgroundResource(android.R.drawable.btn_default);
正确的XML是:
`<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@color/button_pressed"/>
<item android:state_focused="false"
android:drawable="@color/button_focused"/>
<item android:drawable="@color/button_default"/>
</selector>`
你不能集中所有的事实。
是否必须通过XML?否则,您可以使用按钮OnClickListener。 –