使用的图书馆:
问题:
我一直在尝试在类似于YouTube / Beautiful Widget应用程序的menudrawer上实现突出显示,但我不知道应该如何解决问题。
下面我给我的aprproche一个样本,我不确定,如果它是正确的方法来实现这样的事情:
这是我创建的菜单抽屉Adaptervew.click lisner:
private AdapterView.OnItemClickListener mItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
mPreviousView=mActiveView;
mActiveView=view;
mActivePosition = position;
// mDrawer.setActiveView(view, position);
TextView txtview=(TextView)mActiveView;
txtview.setBackgroundResource( R.drawable.abs__cab_background_top_holo_dark);
// mDrawer.closeMenu();
}
};
所以基本上我在这里要做的就是在当前选定的视图上使用.9图像!
我想知道的是有更系统或更好的方法来做同样的事情!
我想要获得以下屏幕截图::
答案 0 :(得分:2)
这是我强调当前菜单项的解决方案:
1)公开NavDrawer活动的最后一个选择抽屉位置:
public class NavDrawerBaseActivity extends Activity {
public static int LAST_DISPLAY_POSITION = 0;
private void displayView(int position) {
LAST_DISPLAY_POSITION = position;
Fragment fragment = null;
switch (position) {
case 0:
fragment = new ProgressPageFragment();
break;
// ..
default:
break;
}
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
// .. update selected item and title, then close the drawer
}
然后在适配器类中的第2步,引用该值:
public class NavDrawerListAdapter extends BaseAdapter {
// ..
@Override
public View getView(int position, View convertView, ViewGroup parent {
TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
if (position == NavDrawerActivity.LAST_DISPLAY_POSITION) {
txtTitle.setTextColor(Color.WHITE);
}
else
txtTitle.setTextColor(Color.BLACK);
// .. etc ..
答案 1 :(得分:0)
你可以尝试一下:
public View getView(int position, View convertView, ViewGroup parent) {
view.setSelectionHandlerColorResource(Set your color here);
}
答案 2 :(得分:0)
有几种方法可以解决这个问题。我最喜欢的方法是将ListView项目TextView放在FrameLayout中。这个FrameLayout可以有一个前景可绘制的指示器。您可以通过编程方式或使用选择器显示/隐藏此指示符。