![](/img/trans.png)
[英]android how to set navigation drawer shifts whole activity with actionbar?
[英]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.