我有一个类似谷歌应用程序(播放音乐,播放电影等)的导航抽屉。
一切都很好;我唯一的问题是:在创建抽屉之后以及任何选择或点击完成之前,我无法弄清楚如何将文字设置为 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);
答案 0 :(得分:13)
您需要保留选择内容,以便所选项目在屏幕外显示后仍保持选中状态。要更改文字颜色和项目背景,您可以使用颜色/可绘制状态列表资源 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);
}
答案 1 :(得分:1)
非常简单,你可以在ListView的 onItemSelected方法上执行此操作。只需使用这段代码就可以使文本变粗。
public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
View rowView = view
TextView tv = (TextView) rowView.findViewById(R.id.label);
tv.setTypeface(null, Typeface.BOLD);
}});