我有一个相对布局,它使用状态列表在按下,聚焦和禁用的状态下显示不同的drawable。现在状态按下,正常工作正常,但当我执行relativeLayoutObject.setEnabled(false)
时,不显示正确的drawable。
我还有relativeLayoutObject.setClickable(false)
并从XML设置android:state_enabled="false"
但没有一个正在运行。
这是我的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:clickable="true"
android:layout_height="match_parent">
<!--SOME ITMES INSIDE THE LAYOUT-->
<RelativeLayout>
,选择器是
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/drawable_d" android:state_enabled="false"/>
<item android:drawable="@drawable/drawable_n" android:state_focused="true"/>
<item android:drawable="@drawable/drawable_p" android:state_pressed="true"/>
<item android:drawable="@drawable/drawable_n"/>
</selector>
我将选择器应用为:relativeLayoutObject.setBackgroundDrawable(R.drawabled.button_state_list);
答案 0 :(得分:0)
刚刚遇到你的问题,即使你提出问题已经过了3年了。)
RelativeLayouts没有禁用/启用状态,所以我所做的是最初将背景可绘制样式设置为我的RelativeLayout,如下所示:
<RelativeLayout
android:id="@+id/activity_register_btn"
...
android:background="@drawable/style_button_yellow_disabled_rounded">
<!-- Register button -->
<TextView
... />
</RelativeLayout>
所以我的风格代码(在drawbles文件夹中):
<强> style_button_yellow_disabled_rounded.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- view background color -->
<solid
android:color="#ffdca5" >
</solid>
<!-- view border color and width -->
<stroke
android:width="1dp"
android:color="#ffdca5" >
</stroke>
<!-- If you want to add some padding -->
<padding
android:left="12dp"
android:top="12dp"
android:right="12dp"
android:bottom="12dp">
</padding>
<!-- Here is the corner radius -->
<corners
android:radius="30dp">
</corners>
</shape>
然后,在我的java文件中,在需要时,我将背景更改为另一个xml,即启用的视图:
<强> style_button_yellow_rounded.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- view background color -->
<solid
android:color="#fcc002" >
</solid>
<!-- view border color and width -->
<stroke
android:width="1dp"
android:color="#fcc002" >
</stroke>
<!-- If you want to add some padding -->
<padding
android:left="12dp"
android:top="12dp"
android:right="12dp"
android:bottom="12dp">
</padding>
<!-- Here is the corner radius -->
<corners
android:radius="30dp" >
</corners>
</shape>