刚创建后设置抽屉式导航粗体文字(任何选择之前) [英] Set bold text in navigation drawer just after creating it (before any selection)

查看:133
本文介绍了刚创建后设置抽屉式导航粗体文字(任何选择之前)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个抽屉式导航像那些来自谷歌应用程序(播放音乐,播放电影等)

一切工作就好了;我唯一​​的问题是:我无法弄清楚如何将文本设置为粗体下,做只创建抽屉后任何选择之前,或者单击结果!
我没有问题,大胆设置后, onItemClick 执行,但如何只创建抽屉后呢?结果
我试图让从抽屉内的列表中查看引用,但它不能正常工作。

有人能帮助我吗?

这是我的抽屉式导航栏code

  mNavDrawerStrings = getResources()getStringArray(R.array.action_bar_list)。
    mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
    mDrawerList =(ListView控件)findViewById(R.id.left_navigation_drawer);    //设置列表视图中的适配器
    mDrawerList.setAdapter(新ArrayAdapter<串GT;(这一点,
            R.layout.navigation_drawer_list_item,mNavDrawerStrings));    mDrawerList.setItemChecked(0,真);
    mDrawerList.setSelection(0);    NavigationDrawerItemClickListener navDrawerClickListener
        =新NavigationDrawerItemClickListener(这一点,mDrawerList,mDrawerLayout);    mDrawerList.setOnItemClickListener(navDrawerClickListener);    //使动作条的应用程序图标表现为动作切换导航抽屉
    getActionBar()setDisplayHomeAsUpEnabled(真)。
    getActionBar()setHomeButtonEnabled(真)。    mDrawerLayout.setDrawerShadow
        (R.drawable.drawer_shadow,GravityCompat.START);    mDrawerToggle =新CustomActionBarDrawerToggle(这一点,mDrawerLayout);
    mDrawerLayout.setDrawerListener(mDrawerToggle);


解决方案

您这样选择的项目保持选中位于屏幕外即使需要preserve选择。要更改文本颜色和背景的项目,你可以使用颜色/绘制对象状态列表资源 http://developer.android.com/guide/topics/resources/color-list-resource.html

然而,如果你想要做的比您需要提供自定义适配器等等。事情是这样的:

 公共类MyArrayAdapter扩展ArrayAdapter<串GT; {    私人诠释selectedItem属性;    公共MyArrayAdapter(上下文的背景下,INT资源的String []对象){
        超级(上下文,资源,对象);
    }    公共无效选择信息(INT将selectedItem){
        this.selectedItem = selectedItem属性;
        notifyDataSetChanged();
    }    @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){
        convertView = super.getView(位置,convertView,父母);
        ((的TextView)convertView).setTypeface(NULL,位置==将selectedItem Typeface.BOLD:Typeface.NORMAL);        返回convertView;
    }
}

在onItemClick():

  @覆盖
公共无效onItemClick(适配器视图<>适配器视图,视图观点,INT位置,长ARG3){
    ((MyArrayAdapter)adapterView.getAdapter())选择信息(位置)。
}

I have a navigation drawer like those from Google apps(Play Music, Play Movies etc..)

Everything works just fine; my only problem is: I can't figure out how to set the text to BOLD, just after creating the drawer and before any selection or click is done!
I have no problem setting bold after the onItemClick is performed, but how to do it just after creating the drawer?
I've tried to get the View reference from the list inside the drawer, but it doesn't work.

Can someone help me?

that's my navigation drawer code

        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);

解决方案

You need to preserve the selection so the selected item stays selected even after it goes outside the screen. For changing text color and item background you could use Color / Drawable State List Resource http://developer.android.com/guide/topics/resources/color-list-resource.html

However if you want to do more than that you would need to provide a custom adapter. Something like this:

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;
    }
}

and in onItemClick():

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

这篇关于刚创建后设置抽屉式导航粗体文字(任何选择之前)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆