Android:为什么ListView中的字幕不是灰色的?

时间:2016-04-28 08:17:05

标签: android listview

我使用最新的Android Studio和SDK。在预览&真实设备我看到了这个:

enter image description here

我的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.myappname.view.AboutActivity">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listViewAbout" />

</RelativeLayout>

我如何制作字幕文字颜色是灰色的?像这样:

enter image description here

2 个答案:

答案 0 :(得分:2)

我要走出困境并假设您正在使用行布局simple_list_item_2.xml(基于屏幕截图),它会为您提供两行。 问题,如果你可以这样说,那就是根据SDK版本,这个布局的styling已经改变了。

SDK 23上,它看起来像这样:

enter image description here

然而,在说SDK 19时,它看起来像这样:

enter image description here

为什么?

要理解这一点,我们首先需要查看从simple_list_item_2.xml生成行的xml,您会看到它是一个非常简单的布局,它使用现在已弃用的视图TwoLineListItem但这只是关于为什么要使用自定义布局的优点。

<TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/listPreferredItemHeight"
    android:mode="twoLine"
    android:paddingStart="?attr/listPreferredItemPaddingStart"
    android:paddingEnd="?attr/listPreferredItemPaddingEnd">

    <TextView android:id="@id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:textAppearance="?attr/textAppearanceListItem" />

    <TextView android:id="@id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/text1"
        android:layout_alignStart="@id/text1"
        android:textAppearance="?attr/textAppearanceListItemSecondary" />

</TwoLineListItem>

原因是每个SDK版本中解析样式textAppearanceListItemSecondary的方式。风格赋予文本大小,颜色等.Android界面的演变催生了一个庞大的主题生态系统,依赖于默认样式会导致像你偶然发现的那样不一致。

该怎么办?

您应该使用自己的布局来实现不同版本的统一样式。为此,请参阅涵盖此事项的任何multiple questions。但简而言之,它只是意味着创建一个布局文件,例如调用它custom_row.xml并使布局看起来完全按照您的要求。这也使您可以完全控制项目的位置,您可能需要的额外视图,与您可能正在使用的SimpleAdapterArrayAdapter相比,编码方面的开销最小。

注意

如果您尚未将代码移至RecyclerView而非ListView,则应考虑将其移至。{/ p>

答案 1 :(得分:0)

  

您可以设置Textview属性
   android:textColor="@color/grey"

     

在您的适配器布局中更改子项目的颜色

     

希望这会有所帮助