繁体   English   中英

Android:如何在导航抽屉中设置粗体文本(指示当前活动)

[英]Android: how to set bold text in navigation drawer (indicates the current activity)

我有一个导航抽屉。 我的问题是:我不知道如何将文本设置为粗体。 它始终是被选中的第一项(粗体)。

附:在我的ListView中,我添加了一个标题。

在我的活动课中:

// Setting the nav drawer list adapter
NavMainMenuAdapter adapter = new NavMainMenuAdapter(this,
                                                    R.layout.list_item_mainmenu,
                                                    items);
drawerList.setAdapter(adapter);

drawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
            View rowView = view;
            TextView tv = (TextView) rowView.findViewById(R.id.textListItemMainMenuTitle);
            //tv.setTypeface(null, Typeface.BOLD);
            displayView(view, position, tv.getText());
            ((NavMainMenuAdapter)((HeaderViewListAdapter)adapterView.getAdapter()).getWrappedAdapter()).selectItem(position);
        }
    });

我的NavMainMenuAdapter类:

public class NavMainMenuAdapter extends ArrayAdapter<NavMainMenuItem> {

private Context context;
private int mSelectedItem;

public NavMainMenuAdapter(Context context, int resource, ArrayList<NavMainMenuItem> items) {
    super(context, resource, items);
}

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

// ....

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item_mainmenu, parent, false);
    }

    // Get the data item for this position
    NavMainMenuItem item = getItem(position);

    ImageView imgIcon = (ImageView) convertView.findViewById(R.id.imageListItemMainMenuPicture);
    TextView txtTitle = (TextView) convertView.findViewById(R.id.textListItemMainMenuTitle);
    TextView txtCount = (TextView) convertView.findViewById(R.id.textListItemMainMenuCounter);

    imgIcon.setImageResource(item.getIcon());
    txtTitle.setText(item.getTitle());

    // displaying count
    // check whether it set visible or not
    if(item.getCounterVisibility()){
        txtCount.setText(item.getCount());
    }else{
        // hide the counter view
        txtCount.setVisibility(View.GONE);
    }

    txtTitle.setTypeface(null, position == mSelectedItem ? Typeface.BOLD : Typeface.NORMAL);

    return convertView;
}

在您的适配器的getView()方法中

txtTitle.setTypeface(null, position == mSelectedItem ? Typeface.BOLD : Typeface.NORMAL);

将上面的行替换为

txtTitle.setTypeface(txtTitle.getTypeface (), position == mSelectedItem ? Typeface.BOLD : Typeface.NORMAL);

希望它能工作。

好的,伙计们,我明白我为什么会有这种行为:当我在抽屉菜单中选择一个项目时,我将启动一个新的Activity。 每个活动都扩展了一个基本的活动,该活动包含菜单抽屉管理。 所以我有4个活动,所以我有4个菜单抽屉(还有4个适配器); 我的变量mSelectedItem在当前活动中更新。 显示的下一个将不会更新mSelected变量(保持为0)。 这就是为什么它始终是菜单中以粗体显示的第一项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM