Android单击时更改背景颜色

时间:2017-09-26 06:01:57

标签: android android-button

我尝试在点击时更改Button的背景颜色,当我释放{{1时{I}}按下Button时,我可以更改背景颜色按钮返回其默认颜色。我不确定从哪里开始我一直试图找到解决这个问题的方法。

`

Button

`

<?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>

8 个答案:

答案 0 :(得分:2)

以下是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,而不是每次单击按钮时都会做出反应。从这里我们将按钮背景颜色更改为黑色。如果您希望每次单击都更改它,则可以应用更多逻辑。

答案 1 :(得分:0)

在您的drawable中,最后<item>表示默认状态。改变它。

编辑:

对不起,我心存错误。您必须在Java或Kotlin中执行此操作,无论您使用哪个。这是比“视图”更多的业务逻辑。

答案 2 :(得分:0)

试试这样:

<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" />

答案 3 :(得分:0)

试试这个

<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>

乐意帮助您

答案 4 :(得分:0)

你试过这个吗?

myButton.setBackgroundColor(Color.RED);

此代码位于onClick方法中。

答案 5 :(得分:0)

试试这个

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);

答案 6 :(得分:0)

这是因为默认情况下,当触摸按钮时,将需要点击而不是焦点。如果您想要按下按钮并在按下时更改其颜色,请将其添加到xml中的按钮。

android:focusableInTouchMode="true"

答案 7 :(得分:0)

正确的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>`

你无法集中注意力。