Android 单击时更改背景颜色
Android Change background color when clicked
我试图在单击时更改 Button
的背景颜色,我可以在按下 Button
时更改背景颜色,然后释放 [=13] =] 按钮 returns 到它的默认颜色。我不确定从这里去哪里我一直在努力寻找解决这个问题的方法。
`
<?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>
在您的可绘制对象中,最后一个 <item>
表示默认状态。改变那个。
编辑:
对不起,我理解错了。您必须在 Java 或 Kotlin 中执行此操作,无论您使用哪个。这比 "view".
更多的业务逻辑
这样试试:
<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,而不是在单击按钮时做出反应。从这里我们将按钮背景颜色更改为黑色。如果你希望它随着每次点击而改变,你可以应用更多的逻辑。
你试过了吗?
myButton.setBackgroundColor(Color.RED);
此代码在您的 onClick 方法中。
试试这个
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
button.setBackgroundColor(ContextCompat.getColor(getActivity(),R.color.colorBlack));
}
});
NOTE if you wan't to reset a button's background color to default than use below code
button.setBackgroundResource(android.R.drawable.btn_default);
这是因为默认情况下,当触摸按钮时,它会点击而不是 focus.If 您希望按钮聚焦并在按下时更改其颜色将此添加到 xml 中的按钮。
android:focusableInTouchMode="true"
正确的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>`
你不能全神贯注。
我试图在单击时更改 Button
的背景颜色,我可以在按下 Button
时更改背景颜色,然后释放 [=13] =] 按钮 returns 到它的默认颜色。我不确定从这里去哪里我一直在努力寻找解决这个问题的方法。
`
<?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>
在您的可绘制对象中,最后一个 <item>
表示默认状态。改变那个。
编辑:
对不起,我理解错了。您必须在 Java 或 Kotlin 中执行此操作,无论您使用哪个。这比 "view".
更多的业务逻辑这样试试:
<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,而不是在单击按钮时做出反应。从这里我们将按钮背景颜色更改为黑色。如果你希望它随着每次点击而改变,你可以应用更多的逻辑。
你试过了吗?
myButton.setBackgroundColor(Color.RED);
此代码在您的 onClick 方法中。
试试这个
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
button.setBackgroundColor(ContextCompat.getColor(getActivity(),R.color.colorBlack));
}
});
NOTE if you wan't to reset a button's background color to default than use below code
button.setBackgroundResource(android.R.drawable.btn_default);
这是因为默认情况下,当触摸按钮时,它会点击而不是 focus.If 您希望按钮聚焦并在按下时更改其颜色将此添加到 xml 中的按钮。
android:focusableInTouchMode="true"
正确的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>`
你不能全神贯注。