android - 在创建抽屉导航后(在任何选择之前)在抽屉导航中设置粗体文本

标签 android navigation-drawer

我有一个抽屉导航,就像来自 Google 应用程序(Play 音乐、Play 电影等)的抽屉导航

一切正常;我唯一的问题是:我不知道如何将文本设置为BOLD,就在创建抽屉之后和完成任何选择或点击之前!
我在执行 onItemClick 后设置粗体没问题,但如何在创建抽屉后立即设置?
我试图从抽屉内的列表中获取 View 引用,但它不起作用。

有人可以帮助我吗?

那是我的抽屉导航代码

        mNavDrawerStrings = getResources().getStringArray(R.array.action_bar_list);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_navigation_drawer);

    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.navigation_drawer_list_item, mNavDrawerStrings));

    mDrawerList.setItemChecked(0, true);
    mDrawerList.setSelection(0);

    NavigationDrawerItemClickListener navDrawerClickListener
        = new NavigationDrawerItemClickListener(this, mDrawerList, mDrawerLayout); 

    mDrawerList.setOnItemClickListener(navDrawerClickListener);

    // enable ActionBar app icon to behave as action to toggle nav drawer
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    mDrawerLayout.setDrawerShadow
        (R.drawable.drawer_shadow, GravityCompat.START);

    mDrawerToggle = new CustomActionBarDrawerToggle(this, mDrawerLayout);
    mDrawerLayout.setDrawerListener(mDrawerToggle);

最佳答案

您需要保留选择,以便所选项目即使在超出屏幕后仍保持选中状态。要更改文本颜色和项目背景,您可以使用颜色/可绘制状态列表资源 http://developer.android.com/guide/topics/resources/color-list-resource.html

但是,如果您想做更多的事情,则需要提供自定义适配器。像这样:

public class MyArrayAdapter extends ArrayAdapter<String>{

    private int selectedItem;

    public MyArrayAdapter(Context context, int resource, String[] objects) {
        super(context, resource, objects);
    }

    public void selectItem(int selectedItem){
        this.selectedItem = selectedItem;
        notifyDataSetChanged();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView = super.getView(position, convertView, parent);
        ((TextView)convertView).setTypeface(null, position == selectedItem ? Typeface.BOLD : Typeface.NORMAL);

        return convertView;
    }
}

在 onItemClick() 中:

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long arg3) {
    ((MyArrayAdapter)adapterView.getAdapter()).selectItem(position);
}

关于android - 在创建抽屉导航后(在任何选择之前)在抽屉导航中设置粗体文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21333955/

相关文章:

android - .dex文件中方法引用数超过64K

android - 打开抽屉时将 Activity 推到右侧

android - 如何获取抽屉导航中的项目以更改 View

android - 检查是否已授予root权限?

android - Cordova 应用程序的 Linkedin 登录

android - 动态链接 - Firebase - 400 错误

android - 抽屉 View 未显示

java - 如何从Android中的前置摄像头还原回翻转的图片?

android - 如何在android中的所有 Activity 中实现抽屉导航

android - DrawerLayout 和 ImageView 都实现了 onTouchListener