5

使用的图书馆:

  1. https://github.com/SimonVT/android-menudrawer
  2. https://github.com/JakeWharton/ActionBarSherlock
  3. https://github.com/JakeWharton/Android-ViewPagerIndicator

问题:

我一直在尝试在类似于 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 图像!

我想知道的是有没有更系统或更好的方法来做同样的事情!

我想要实现以下屏幕截图::

在此处输入图像描述 在此处输入图像描述

4

3 回答 3

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 ..
于 2014-04-29T03:13:03.103 回答
0

你可以试一试:

public View getView(int position, View convertView, ViewGroup parent) {
    view.setSelectionHandlerColorResource(Set your color here);
}
于 2013-04-11T17:16:14.520 回答
0

有几种方法可以解决这个问题。我最喜欢的方法是将您的 ListView 项 TextView 放在 FrameLayout 中。然后,此 FrameLayout 可以有一个前景可绘制对象来容纳您的指示器。您可以通过编程方式或使用选择器显示/隐藏此指示器。

于 2013-05-26T13:34:59.450 回答