5

使用したライブラリ:

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

質問:

YouTube / Beautiful Widget アプリと同様に、メニュードロワーにハイライトを実装しようとしていますが、問題にどのようにアプローチすべきかわかりません。

以下に、このようなものを実装する正しい方法であるかどうか、確信が持てない私の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 アクティビティの最後の select drawerPosition を公開します。

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

これに対処するにはいくつかの方法があります。私のお気に入りのアプローチは、ListView アイテム TextView を FrameLayout 内に配置することです。この FrameLayout は、インジケータを格納するフォアグラウンド ドローアブルを持つことができます。このインジケーターは、プログラムまたはセレクターを使用して表示/非表示にできます。

于 2013-05-26T13:34:59.450 に答える
0

あなたはそれを試すことができます:

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