在焦点上更改颜色onClick和背景

时间:2014-12-14 21:52:45

标签: android listview material-design drawer

我的导航抽屉里有一个ListView,希望它看起来像Playstore App或Youtube App。

表示onClick将FontColor for Example更改为红色,当我按住它时,背景应变为灰色。

我是否必须使用2 onitemclicklistener?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="48dp">

<ImageView
    android:id="@+id/icon"
    android:layout_width="25dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="12dp"
    android:layout_marginRight="12dp"
    android:contentDescription="@string/DrawerListIcon"
    android:src="@drawable/ic_home"
    android:layout_centerVertical="true" />

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_toRightOf="@id/icon"
    android:textSize="14sp"
    android:textStyle="bold"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:textColor="@color/DrawerListFontColor"
    android:gravity="center_vertical"
    android:paddingRight="40dp"
    android:paddingLeft="0dp"/>
</RelativeLayout>

尝试使用物品和选择器。按下按钮时,字体颜色首先不会改变。其次,相对布局的背景变为灰色的蓝色。

drawer_list_font.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_focused="true"
    android:color="@color/DrawerListFontColorPressed"
    />
<item android:color="@color/DrawerListFontColor"/></selector>

drawer_list_background.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_focused="true"
    android:color="@color/DrawerListBackgroundFocused"
    />
<item
    android:color="@color/DrawerBackground"
    /></selector>

我不得不在相对布局上使用android:drawable而不是background。在Textview上,Android Stuio接受了android:color。

2 个答案:

答案 0 :(得分:0)

通过在每次点击事件中更改ur java文件中的视图来更改此视图您可以更改视图。你必须为它做多个视图,即xml文件。哪些是动态更改的,或者你也可以向函数发送参数并在运行时创建一个xml,但这对你来说太深了

答案 1 :(得分:0)

根本不需要听众。 这里更好的方法是创建可绘制的XML,其中包含每个州的定义(&#34;按下&#34;,&#34;聚焦&#34;等)。 查看Color State List resources

例如:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false"android:color="#80000" />
    <item android:state_focused="true" android:state_pressed="true" android:color="#ff0000" />
    <item android:state_focused="false" android:state_pressed="true" android:color="#ff0000" />
    <item android:color="@color/DrawerListFontColor" />
</selector>