我的应用程序中有一个自定义工具栏视图。使用自定义属性,我为此工具栏定义了自定义状态(枚举值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>
谢谢!