Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓更改按钮样式资源点击_Android_Android Layout_Button - Fatal编程技术网

Android 安卓更改按钮样式资源点击

Android 安卓更改按钮样式资源点击,android,android-layout,button,Android,Android Layout,Button,我还没能找到我想在上面做什么,但我觉得这应该是一个非常常见的接口需要,必须有一个简单的方法来完成这一点,我错过了 在my style.xml中,我有两种按钮样式,一种是标准的“活动”按钮,另一种是“非活动”按钮 当用户单击按钮时,如何在这些样式之间进行更改?最重要的是不必在代码中设置特定的样式,这只是imho的最后手段 谢谢 解决方案说明 通常我遵循下面的解决方案,但是我创建了一个可绘制的选择器,并使用了android:drawable,因为按钮背景似乎需要它,即使只是指定了一种颜色。我还使用了

我还没能找到我想在上面做什么,但我觉得这应该是一个非常常见的接口需要,必须有一个简单的方法来完成这一点,我错过了

在my style.xml中,我有两种按钮样式,一种是标准的“活动”按钮,另一种是“非活动”按钮

当用户单击按钮时,如何在这些样式之间进行更改?最重要的是不必在代码中设置特定的样式,这只是imho的最后手段

谢谢

解决方案说明

通常我遵循下面的解决方案,但是我创建了一个可绘制的选择器,并使用了
android:drawable
,因为按钮背景似乎需要它,即使只是指定了一种颜色。我还使用了
state\u activated
而不是enabled,这样它只会改变按钮的外观,不会阻止点击

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="false"
      android:drawable="@color/colorPrimaryDark" />
<item android:state_activated="true"
      android:drawable="@color/colorGreen" />
<item android:drawable="@color/colorGreen" />
在Java中

myButton.setActivated(true);

你要找的是

drawable/my_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:color="@color/enabled_color"/>
    <item android:color="@color/enabled_color"
         android:state_enabled = "true"/>
    <item android:color="@color/disbaled_color"
         android:state_enabled = "false"/>
</selector>

有趣的如果我想更改按钮的颜色以及按钮内文本的颜色,我需要创建两个不同的可绘制文件吗?启用状态显示为完全禁用按钮,因此一旦按钮设置为禁用,我就无法在打开或其他按钮之间切换。无法理解您的评论。如果我将按钮设置为
android:enabled=“false”
或`myButton.setEnabled(true);`这个按钮不再响应,所以我不能再次点击它来重新激活它和停用另一个。是的,这只是一个例子。您的问题是关于如何根据不同的状态更改视图的样式。您必须根据您的要求修改代码。
android:background="@drawable/selector_btn_bkg"
android:state_activated="false"
myButton.setActivated(true);
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:color="@color/enabled_color"/>
    <item android:color="@color/enabled_color"
         android:state_enabled = "true"/>
    <item android:color="@color/disbaled_color"
         android:state_enabled = "false"/>
</selector>
...
<Button
    android:id="@+id/my_button"
    android:enabled="false"
    android:background="@drawable/my_selector"/>
onClick(View v){
    myButton.setEnabled(true);
}