某些视图可以启用/禁用,而其他视图则不能

时间:2017-07-06 21:11:49

标签: android

我这里的布局有一些嵌套布局,其中包含我想启用/禁用的各种视图。我认为就像在他们身上调用setEnabled()一样直截了当但我发现只能在TextviewsSwitches上运行。 SeekbarsTogglebuttonsImagebuttons不会以编程方式对setEnabled()做出反应,并且不会以XML格式提供android:enabled="" {}}。我在这里缺少什么?

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <!-- ***** Zoom ***** -->
    <RelativeLayout
        android:id="@+id/RL_zoom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="1dp"
        android:background="@drawable/layout_bg_transluscent"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textview_zoomLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_centerInParent="true"
            android:text="Zoom"
            android:textColor="#ff43b7ff"
            android:textSize="20sp" />

        <ImageButton
            android:id="@+id/imagebutton_zoomOut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginStart="15dp"
            android:layout_toEndOf="@+id/textview_zoomLabel"
            android:background="@null"
            android:src="@drawable/ic_zoom_out_white_24dp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_toEndOf="@+id/imagebutton_zoomOut"
            android:layout_toStartOf="@+id/imagebutton_zoomIn"
            android:orientation="horizontal">

            <SeekBar
                android:id="@+id/seekbar_zoom"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </LinearLayout>

        <TextView
            android:id="@+id/textview_zoomValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="5dp"
            android:layout_toStartOf="@+id/textview_zoomPercentageLabel"
            android:text="50" />

        <TextView
            android:id="@+id/textview_zoomPercentageLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_centerInParent="true"
            android:text="%" />

        <ImageButton
            android:id="@+id/imagebutton_zoomIn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_toStartOf="@id/textview_zoomValue"
            android:background="@null"
            android:src="@drawable/ic_zoom_in_white_24dp" />
    </RelativeLayout>

    <!--   *****  Focus ***** -->
    <RelativeLayout
        android:id="@+id/RL_focus"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/RL_zoom"
        android:layout_marginTop="2dp"
        android:background="@drawable/layout_bg_transluscent"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textview_focusLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/togglebutton_autofocus"
            android:layout_centerInParent="true"
            android:text="Focus"
            android:textColor="#ff43b7ff"
            android:textSize="20sp" />

        <ImageButton
            android:id="@+id/imagebutton_focusOut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginStart="14dp"
            android:layout_toEndOf="@+id/textview_focusLabel"
            android:background="@null"
            android:src="@drawable/ic_zoom_out_white_24dp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_toEndOf="@+id/imagebutton_focusOut"
            android:layout_toStartOf="@+id/imagebutton_focusIn"
            android:orientation="horizontal">

            <SeekBar
                android:id="@+id/seekbar_focus"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </LinearLayout>

        <TextView
            android:id="@+id/textview_focusValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="5dp"
            android:layout_toStartOf="@+id/textview_focusPercentageLabel"
            android:text="50" />

        <TextView
            android:id="@+id/textview_focusPercentageLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_toStartOf="@+id/togglebutton_autofocus"
            android:text="%" />

        <ImageButton
            android:id="@+id/imagebutton_focusIn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_toStartOf="@id/textview_focusValue"
            android:background="@null"
            android:src="@drawable/ic_zoom_in_white_24dp" />

        <ToggleButton
            android:id="@+id/togglebutton_autofocus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_centerInParent="true"
            android:layout_marginLeft="3dp"
            android:minHeight="1dp"
            android:minWidth="1dp"
            android:textAllCaps="false"
            android:textColor="#ff43b7ff"
            android:textOff="AF&#10;Off"
            android:textOn="AF&#10;On" />
    </RelativeLayout>

    <!--   *****  Iris ***** -->
    <RelativeLayout
        android:id="@+id/RL_iris"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/RL_focus"
        android:layout_marginTop="2dp"
        android:background="@drawable/layout_bg_transluscent"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textview_irisLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/togglebutton_autoiris"
            android:layout_centerInParent="true"
            android:text="Iris"
            android:textColor="#ff43b7ff"
            android:textSize="20sp" />

        <ImageButton
            android:id="@+id/imagebutton_irisOut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginStart="41dp"
            android:layout_toEndOf="@+id/textview_irisLabel"
            android:background="@null"
            android:src="@drawable/ic_zoom_out_white_24dp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_toEndOf="@+id/imagebutton_irisOut"
            android:layout_toStartOf="@+id/imagebutton_irisIn"
            android:orientation="horizontal">

            <SeekBar
                android:id="@+id/seekbar_iris"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </LinearLayout>

        <TextView
            android:id="@+id/textview_irisValue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_marginLeft="5dp"
            android:layout_toStartOf="@+id/textview_irisPercentageLabel"
            android:text="50" />

        <TextView
            android:id="@+id/textview_irisPercentageLabel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_toStartOf="@+id/togglebutton_autoiris"
            android:text="%" />

        <ImageButton
            android:id="@+id/imagebutton_irisIn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_toStartOf="@id/textview_irisValue"
            android:background="@null"
            android:src="@drawable/ic_zoom_in_white_24dp" />

        <ToggleButton
            android:id="@+id/togglebutton_autoiris"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_centerInParent="true"
            android:layout_marginLeft="3dp"
            android:minHeight="1dp"
            android:minWidth="1dp"
            android:textAllCaps="false"
            android:textColor="#ff43b7ff"
            android:textOff="AI&#10;Off"
            android:textOn="AI&#10;On" />
    </RelativeLayout>

    <!--   *****  On/Off ***** -->
    <RelativeLayout
        android:id="@+id/RL_device_tools_on_off"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/RL_iris"
        android:layout_marginTop="2dp"
        android:background="@drawable/layout_bg_transluscent"
        android:orientation="horizontal">

        <Switch
            android:id="@+id/switch_device_power_on_off"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="Device Power"
            android:textColor="#ff43b7ff" />

        <ImageButton
            android:id="@+id/imagebutton_device_refresh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toEndOf="@+id/switch_device_power_on_off"
            android:src="@drawable/ic_refresh_white_24dp" />
    </RelativeLayout>

</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

虽然每个视图都有setEnabled方法,the interpretation of the value set through it varies by subclass

在您的情况下,TextViewSwitchToggleButton具有在设置时响应此值的逻辑。其他人没有。以类似的方式,您只能在it is defined as an attribute that can be used with TextViews上设置android:enabled属性。

如果您希望SeekbarImageButton回复setEnabled值,您可以创建自定义视图以扩展其中的每一个,覆盖setEnabled方法,然后实现您希望每个视图的反应方式。

答案 1 :(得分:0)

事实证明我有一些我修复过的错误。我发布了我学到的东西,因为我之前没有看过它,以防其他人碰到这个。如果您将自定义颜色设置为TextView,则调用setEnabled()不会影响颜色,使其看起来处于禁用状态。同样,对于ImageView,我将背景设置为null,这也使得该按钮看起来没有对setEnabled()作出反应。我确定其他Views有这样的细微差别,我还没有找到它们。