【问题标题】:Change Color onClick and background on Focus更改颜色 onClick 和背景焦点
【发布时间】:2015-02-12 23:44:34
【问题描述】:

我的导航抽屉中有一个 ListView,希望它看起来像 Playstore 应用程序或 Youtube 应用程序。

意味着 onClick 将示例的 FontColor 更改为红色,当我按住它时,背景应该变成灰色。

我必须使用 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>

尝试使用项目和选择器。当我按下按钮时,第一件事字体颜色不会改变。其次,Relative Layout 的背景变为蓝色而不是灰色。

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 而不是背景。在 Textview Android Stuio 上接受 android:color。

【问题讨论】:

    标签: android listview material-design drawer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      根本不需要听众。 这里更好的方法是创建可绘制的 XML,并为每个状态(“按下”、“聚焦”等)定义。 查看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>
      

      【讨论】:

      • 好的,谢谢。这就是我要找的。不幸的是,它的效果并不好。你能告诉我有什么问题吗?请参阅我的第一篇文章。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 2011-07-20
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      相关资源
      最近更新 更多