android - 抽屉导航选择的项目 textColor by Custom Adapter

标签 android android-arrayadapter navigation-drawer textcolor

我可以知道如何更改抽屉导航中所选项目的文本颜色吗。

安装 appcompat_v7 22.1.1 后,listview 的 android:textColor 不工作 所以我认为我无法使用可绘制的选择器进行更改。

我设法使用自定义适配器更改抽屉项目的默认颜色。

但这只能在初始化时将第一项设置为绿色。

我可以知道如何在选择项目时将所选项目的颜色(onclick)更改为我想要的颜色。

适配器:

public class NavigationDrawerAdapter extends ArrayAdapter<String> {
    private int mSelectedItem;
    private final Context context;
    private String[] sections;

    public NavigationDrawerAdapter(Context context, int resource, String[] objects) {
        super(context, resource, objects);
        this.context = context;
        sections = objects;
    }
    public int getSelectedItem() {
        return mSelectedItem;
    }
    public void setSelectedItem(int selectedItem) {
        mSelectedItem = selectedItem;
    }

    private String getMenuItemTitle(int position) {
        if (position >= 0 && position <= sections.length)
            return sections[position];
        return "Invalid section requested";
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //Get item TextView
        TextView view = (TextView) super.getView(position, convertView, parent);

        view.setText(getMenuItemTitle(position));

        if (position == mSelectedItem) {
            view.setTextColor(getContext().getResources().getColor(R.color.green));
        } else {
            view.setTextColor(getContext().getResources().getColor(R.color.white));        }
        return view;
    }
}

抽屉导航:

mDrawerListView.setAdapter(new NavigationDrawerAdapter(
                getActionBar().getThemedContext(),
                android.R.layout.simple_list_item_activated_1,
                new String[]{
                        getString(R.string.title_home),
                        getString(R.string.title_stamp),
                        getString(R.string.title_scanner),
                        getString(R.string.title_setting),}) {

        });
        mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
        return mDrawerListView;
..
...
private void selectItem(int position) {
        mCurrentSelectedPosition = position;

        if (mDrawerListView != null) {
            mDrawerListView.setItemChecked(position, true);
        }
        if (mDrawerLayout != null) {
            mDrawerLayout.closeDrawer(mFragmentContainerView);
        }
        if (mCallbacks != null) {
            mCallbacks.onNavigationDrawerItemSelected(position);
        }
    }

最佳答案

我找到了解决方案。

因为我已经扩展了适配器。 我只需要在点击项目进行更改时按位置调用和更改所选项目。

ListDrawer onItemClickListener:

 mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                selectItem(position);

                myadapter.setSelectedItem(position);

            }

从自定义适配器:

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

    private String getMenuItemTitle(int position) {
        if (position >= 0 && position <= sections.length)
            return sections[position];
        return "Invalid section requested";
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        //Get item TextView
      TextView view = (TextView) super.getView(position, convertView, parent);

        view.setText(getMenuItemTitle(position));

        if (position == mSelectedItem) {
            view.setTextColor(getContext().getResources().getColor(R.color.green));
        } else {
            view.setTextColor(getContext().getResources().getColor(R.color.normal));
        }

        return view;
    }

*适配器类有问题。

来源:samsaodev.com

关于android - 抽屉导航选择的项目 textColor by Custom Adapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30250631/

相关文章:

java - 执行 get 时 Room DB 正在更改项目的顺序

android - 几个 TextViews,使用自定义数组适配器

Android 自定义 Arrayadapter 不在 ListView 中显示数据

android - 我可以在 DrawerLayout 中使用 SwipeRefreshLayout 吗?

android - 如何使抽屉导航不完全关闭左侧抽屉?

android - 在右抽屉的双抽屉导航中禁用抽屉图标的动画

android - 自动调整 EditText

java - Activity 生成一个线程,但随后该 Activity 被销毁,或者在子线程完成之前创建一个新 Activity (在同一任务中)

Android:如何检测 Back 按钮是否会退出应用程序(即这是堆栈中的最后一个 Activity )?

android - 使用可用的 wifi 地址填充微调器