复杂ListView项中的TextView文本颜色因设备而异

时间:2019-03-10 19:18:04

标签: android android-listview

我有一个ListView和一个仅由TextView和Button组成的自定义项目布局。实际的ListView可以正常工作,但是在我测试的不同设备上它的显示方式却有所不同。

在我的Android 8.0设备上,该文本为深灰色,但在我的6.0设备上,该文本为浅灰色,在“活动”的白色背景下几乎看不到。此外,在该设备上,按钮的颜色也相反,在8.0中的浅色按钮上为深色文本,在6.0上则相反。

<RelativeLayout            
    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:id="@+id/cell_peer"
    android:descendantFocusability="blocksDescendants"
    android:padding="3dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >

    <TextView
        android:id="@+id/text_peer_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:text="TextView"
        tools:text="@tools:sample/full_names" />

    <Button
        android:id="@+id/button_call_peer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="Call"
        app:layout_constraintEnd_toEndOf="parent"
        />
</RelativeLayout>

清单:

<activity android:name=".activities.FriendsListActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:label="Call a friend"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme.NoActionBar"
    ></activity>

我可以通过在TextView上设置android:textColor="@color/color_callable_peer_name"来轻松解决文本对比度问题,但是我的问题是:为什么在不同平台上此文本默认设置为不同的颜色?

1 个答案:

答案 0 :(得分:1)

因为您可以轻松地做到这一点。

public class MyTextView extends TextView {
    public MyTextView (Context context) {
        super(context);
        if (android.os.Build.VERSION.SDK_INT == ......Marshmallow){
            // set text color you wanted}
        else
        {
            //set text color you wanted
        }
    }     
}

在您的xml文件中,使用MyTextView代替TextView。