Android:将自定义状态传递到自定义布局内的子imageview

时间:2020-02-02 07:58:14

标签: android xml

我的应用程序中有一个自定义工具栏视图。使用自定义属性,我为此工具栏定义了自定义状态(枚举值HOME = 0,SUBPAGE = 1)。

在此工具栏中,我有一个选择器可绘制的custom_nav_icon.xml,它根据状态具有不同的可绘制。

我希望可绘制对象基于自定义工具栏(主页/子页面)的状态进行更新。这可能吗?我尝试使用android:duplicateParentState =“ true”,但这似乎不起作用。

参考代码。

res / layout / custom_toolbar_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:actionBarSize"
>
    <ImageView
        android:id="@+id/nav_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        **android:duplicateParentState="true"**
        android:layout_alignParentStart="true"
        **android:src="@drawable/custom_nav_icon"**/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/search_icon"
        android:layout_alignParentEnd="true"
        android:src="@drawable/ic_search"/>

自定义属性(res / values / attrs.xml)-

    <declare-styleable name="MyCustomToolbar">
    <attr name="state" format="enum">
        <enum name="home" value="0"/>
        <enum name="subpage" value="1"/>
    </attr>
</declare-styleable>

res / layout / activity_main.xml-

<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity">

**<com.sample.MyCustomToolbar
    android:id="@+id/myToolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:state="subpage"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    />**
<FrameLayout
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?android:actionBarSize"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/myToolbar">

</FrameLayout>

res / drawable / custom_nav_icon.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:drawable="@drawable/ic_home" **app:state="home"** />
    <item android:drawable="@drawable/ic_back" **app:state="subpage"**/>
</selector>

谢谢!

0 个答案:

没有答案