gpt4 book ai didi

android - DrawerLayout 内的布局选择器不起作用

转载 作者:行者123 更新时间:2023-11-29 01:40:09 28 4
gpt4 key购买 nike

我有一个 View 与不在列表中的抽屉导航的底部对齐。

activity_main.xml

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/readscreen_bg">

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/loading_layout"
android:visibility="invisible">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_centerInParent="true" />

</RelativeLayout>
</FrameLayout>

<RelativeLayout
android:id="@+id/navigation_drawer_content"
android:layout_width="@dimen/navigation_width"
android:layout_height="match_parent"
android:background="@color/navdrw_bg"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_gravity="start" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/navigation_support_item_height"
android:id="@+id/support_project"
android:focusableInTouchMode="true"
android:clickable="true"
android:focusable="true"
android:background="@drawable/support_project_selector"
android:layout_alignParentBottom="true">

<ImageView
android:layout_width="@dimen/navigation_item_icon_size"
android:layout_height="@dimen/navigation_item_icon_size"
android:id="@+id/navigation_icon"
android:layout_marginLeft="@dimen/navigation_item_icon_left_margin"
android:layout_marginRight="@dimen/navigation_item_icon_right_margin"
android:layout_centerVertical="true"
android:src="@drawable/ic_menu_support"
android:layout_alignParentLeft="true"/>

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/navdrw_bg"
android:text="@string/navigation_support_project"
android:textSize="@dimen/navigation_item_text_size"
android:id="@+id/navigation_name"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:layout_toRightOf="@+id/navigation_icon"/>

</RelativeLayout>

<ListView android:id="@+id/left_drawer"
android:layout_width="@dimen/navigation_width"
android:layout_height="match_parent"
android:layout_above="@+id/support_project"
android:layout_gravity="left"
android:dividerHeight="0dp"
android:divider="@null"/>

</RelativeLayout>

</android.support.v4.widget.DrawerLayout>

是的,ID 为 support_project。问题是此布局的选择器不起作用。

support_project_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">

<!-- Selected -->
<item
android:drawable="@color/navdrw_support_block_bg_pressed"
android:state_focused="true"
android:state_selected="true"/>

<!-- Pressed -->
<item
android:drawable="@color/navdrw_support_block_bg_pressed"
android:state_focused="false"
android:state_selected="true"/>

<!-- When not selected -->
<item
android:drawable="@color/navdrw_support_block_bg"/>

</selector>

我尝试了很多变体,但没有任何帮助。当 View 未被点击时,选择器确实安装颜色,但当它被点击时它不会改变它的颜色。

但是布局是可点击的,我确实收到了点击事件并且可以处理它。问题仅在于单击/激活颜色。

Activity 状态和正常状态的选择器中的颜色 100% 完全不同。

最佳答案

这里有多个方面你处理得不太好。

首先,您的选择器可能状态:

对于每个要自定义的状态,您应该有一个 item 标签,每个项目标签都有一个不同的 android:state 值。因此,从两种状态(选中和按下)中删除您的 android:state_focused 属性。

在你的 pressed 状态下,你正在使用 android:state_selected="true" 而你应该使用 android:state_pressed="true"。这将使您的选择器在实际按下项目时起作用,而不仅仅是在它被选中时。

其次,为了影响 RelativeLayout 的选择器,您必须通过在 xml 布局中添加 android:clickable=true 属性将其设置为可点击。例如,RelativeLayoutButton 不同,默认情况下不可点击。

最后,将 android:duplicateParentState="true" 添加到您的 RelativeLayout 子级 ViewsImageView TextView 。此属性允许子项具有与父项相同的状态。当您的 RelativeLayout 被选中或按下时,该状态将由其子项复制。

你就完成了。您的选择器正在工作。

关于android - DrawerLayout 内的布局选择器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25211793/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com