如何在Android fragment界面中编辑listview菜单的颜色



我遵循三星开发者的教程使用片段。

我的listview菜单有一个白色的背景(激活时是蓝色的)和白色的文本,而不是教程中的listview菜单颜色更深。我想是因为我用了全息之光的主题。如何使我的列表视图菜单更具可读性,例如改变列表视图中的字体颜色?

编辑:当我将主题更改为Holo (Dark)时,菜单看起来不错。然而,我希望它有黑色的文字颜色在白色的背景。

我尝试创建一个名为simple_list_item_activated_1.xml的布局文件,但这没有任何区别。我还尝试将simple_list_item_activated_1更改为simple_list_item_activated_2simple_list_item等,但这也没有任何区别,在某些情况下,当我运行它时,应用程序强制退出。

FragmentA.java:

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter(getActivity().
    getApplicationContext(), android.R.layout.simple_list_item_activated_1, tutorialList));
}
    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

From ArrayAdapter Overview:

默认情况下,该类期望提供的资源id引用单个TextView。如果您想使用更复杂的布局,请使用带有字段id的构造函数。那个字段id应该在更大的布局资源中引用一个TextView。(…)要使用其他的东西而不是TextViews的数组显示,例如,ImageViews,或者有一些数据除了toString()结果填充视图,重载getView(int, View, ViewGroup)来返回你想要的视图类型。

根据您的需要,您可以提供自定义的TextView定义在XML文件或更复杂的布局,并使用它重写getView()方法。第一个选项可能对你足够了,只需创建自定义textview黑色文本和白色背景。

示例代码

/res/可拉的/row_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <color android:color="#0CC" />
    </item>
    <item>
        <color android:color="#FFF" />
    </item>
</selector>

/res/布局/sample_row.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:textAppearance="?android:attr/textAppearanceLarge"
      android:gravity="center_vertical"
      android:background="@drawable/row_background"
      android:textColor="#000"
      android:minHeight="?android:attr/listPreferredItemHeight"
      android:clickable="true" />

和FragmentA.java

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter(
        getActivity().getApplicationContext(),
        R.layout.sample_row,
        tutorialList)
    );
}

最新更新