如何使RelativeLayout处于禁用状态?

时间:2013-07-15 12:23:10

标签: android

我有一个相对布局,它使用状态列表在按下,聚焦和禁用的状态下显示不同的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);

1 个答案:

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