android - 更改抽屉导航列表文本颜色并添加图标

标签 android

我在堆栈溢出上没有找到这个问题的任何好的答案。我正在使用 Android Studio 默认抽屉导航布局。我尝试从fragment_navigation.xml 更改textView 的颜色,但这没有帮助。我不知道如何在 NavigationDrawerFragment.java 中更改颜色。也许需要对下面的代码进行一些编辑。

  mDrawerListView.setAdapter(new ArrayAdapter<String>(
            getActionBar().getThemedContext(),
            android.R.layout.simple_list_item_activated_1,
            android.R.id.text1,
            new String[]{
                    getString(R.string.title_section1),
                    getString(R.string.title_section2),
                    getString(R.string.title_section3),
                    getString(R.string.title_section4),
                    getString(R.string.title_section5),
                    getString(R.string.title_section6)
            }));

    ViewGroup header = (ViewGroup) inflater.inflate(R.layout.headers, mDrawerListView,false);

    mDrawerListView.addHeaderView(header, null, false);
    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
    return mDrawerListView;
}

此外,我找不到任何关于在抽屉导航列表中添加图标和文本的好教程。请也帮我解决这个问题。

最佳答案

您需要做的就是创建一个自定义适配器,而不是在默认代码中使用 ArrayAdapter。

我刚刚得到一个简单的示例,它使用扩展 ArrayAdapter 的自定义适配器。

首先,您需要自定义适配器中每一行的布局。

nav_drawer_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/icon"
        android:paddingTop="20dp"
        android:layout_width="35dp"
        android:layout_height="55dp" />

    <TextView
        android:id="@+id/text"
        android:textStyle="bold"
        android:textColor="#ff69b4"
        android:paddingTop="25dp"
        android:layout_marginLeft="4dp"
        android:layout_width="wrap_content"
        android:layout_height="55dp" />

</LinearLayout>

然后,在 NavigationDrawerFragment.java 中定义自定义适配器,并使用它代替默认的 ArrayAdapter:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    mDrawerListView = (ListView) inflater.inflate(
            R.layout.fragment_navigation_drawer, container, false);
    mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            selectItem(position);
        }
    });


    //Use Custom Adapter instead:
    mDrawerListView.setAdapter(new CustomNavAdapter(
            NavigationDrawerFragment.this.getActivity(),
            new String[]{
                    getString(R.string.title_section1),
                    getString(R.string.title_section2),
                    getString(R.string.title_section3),
            },
            new Integer[]{
                    R.drawable.ic_launcher,
                    R.drawable.ic_launcher,
                    R.drawable.ic_launcher,
            }));

    mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
    return mDrawerListView;
}


public class CustomNavAdapter extends ArrayAdapter<String> {
    private final Activity _context;
    private final String[] _text;
    private final Integer[] _imageId;

    public CustomNavAdapter(Activity context, String[] text, Integer[] imageId) {
        super(context, R.layout.nav_drawer_item, text);
        this._context = context;
        this._text = text;
        this._imageId = imageId;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = _context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.nav_drawer_item, null, true);
        TextView txtTitle = (TextView) rowView.findViewById(R.id.text);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        txtTitle.setText(_text[position]);
        imageView.setImageResource(_imageId[position]);

        return rowView;
    }

}

结果:

Custom Navigation Drawer

关于android - 更改抽屉导航列表文本颜色并添加图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30552451/

相关文章:

android - 我用Android Studio生成的APK无法正常工作

android - 如何在 Fragments 中使用 XML onClick 处理按钮点击

带有添加按钮的 Android ListPreference

android - 如何在 android webview 中显示加载栏作为页面加载?

android - 渐变兼容性问题 - ICS 默认使用的颜色比所有以前版本的 Android 都少

Android 设备 UDID 或唯一 ID?

android - android.testVariants 有什么用?

Android:ListView 上的 AutoCompleteTextView 上边距

android - Cocos2d-x android无法解析coscos2dx库

java - 从 TD 标签中解析 Html 文本