android - 如何更改抽屉导航的 TextView 中图标和文本的颜色?

标签 android material-design

我正在尝试遵循 Material Design 指南,但我不知道如何更改抽屉式导航栏的图标和文本的颜色。

(向下滚动到选择状态): http://www.google.com/design/spec/patterns/navigation-drawer.html#navigation-drawer-content

这是来 self 的 MainActivity(在 onCreate() 中):

    protected void onCreate(Bundle savedInstanceState) {
    ...
    ListAdapter adapter = new MyAdapter(this, menu, imageID);
    ListView listView = (ListView) findViewById(R.id.listView);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            mAdapter.setSelectedItem(position);
        }
    });
   ...
   }

来自 MyAdapter():

public class MyAdapter extends ArrayAdapter<String>{

private Integer[] imageID;
private int mSelectedItem;

public MyAdapter(Context context, String[] menu, Integer[] imageID) {
    super(context, R.layout.row_layout, menu);
    this.imageID = imageID;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(getContext());

    View view = inflater.inflate(R.layout.row_layout, parent, false);

    String menu = getItem(position);
    TextView textView = (TextView) view.findViewById(R.id.textView1);
    textView.setText(menu);

    if (position == getSelectedItem()) {
        textView.setTextColor(getContext().getResources().getColor(R.color.primaryColor));
    }
    else {
        textView.setTextColor(getContext().getResources().getColor(R.color.navDrawerTextColor));
    }

    ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
    imageView.setImageResource(imageID[position]);

    return view;
}

public int getSelectedItem() {
    return mSelectedItem;
}

public void setSelectedItem(int selectedItem) {
    mSelectedItem = selectedItem;
}

我的 TextView 来自 xml 文件:

    <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_gravity="center_vertical"
    android:fontFamily="sans-serif-medium"
    android:paddingStart="72dp"
    android:paddingEnd="16dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="@color/color_selector"
    android:textSize="14sp" />

感谢任何帮助,提前致谢!

编辑:我使用了 color_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/primaryColor" android:state_pressed="true" />
    <!-- pressed -->
    <item android:color="@color/primaryColor" android:state_selected="true" />
    <!-- selected -->
    <item android:color="#DE000000" />
    <!-- default -->
</selector>

但是当项目被选中时,它不会永久保持那个颜色

最佳答案

您应该考虑使用 NavigationView , 的一部分 Android Design Support Library为您完成抽屉导航的所有项目选择和样式设置。

关于android - 如何更改抽屉导航的 TextView 中图标和文本的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158210/

相关文章:

android - 为 Android 构建内核 : multiple target patterns

android - PagerSlidingTabStrip - 在运行时添加新选项卡

Android自定义圆形按钮

android - 设计指南 - 尺寸不相加

css - Angular Material 缺少 CSS 类

android - 迁移到 androidx 后错误膨胀类 androidx.appcompat.widget.FitWindowsFrameLayout

android - Android 上触觉反馈的一般设置

polymer - Material 设计选择框 polymer

android - 安卓:elevation tag raises issue in android layout file

java - 如何在editText中放置一个按钮