如何在操作栏中对导航抽屉图标和应用程序图标进行不同的操作?

时间:2014-07-23 07:30:35

标签: android android-actionbar navigation-drawer

我在操作栏上有导航抽屉图标和应用程序图标。我需要对两者都有不同的操作(导航抽屉图标必须打开导航抽屉,应用程序图标将启动应用程序的主屏幕)。现在它看起来像下面的图片,并对应用程序图标和导航抽屉图标具有相同的操作。

非常感谢您的帮助!enter image description here

2 个答案:

答案 0 :(得分:2)

你所谓的NavigationDrawer图标实际上并不是一个图标,它是附加指示器(放在ActionBarDrawerToggle中),显示导航抽屉是否被打开/关闭,所以在点击该区域时只有一个clickListener被调用。

即使可能,对于用户来说也会非常混乱,因为图标很小并且彼此接近。

考虑在这种情况下重新设计导航流程(顺便说一句,后退按钮应该从该活动返回主屏幕)

答案 1 :(得分:0)

不确定它有多好,但最终得到了解决方案!

可以使用操作栏的自定义布局来完成。示例代码在这里。

//mActionbarView is the custom view to be used for action bar
    View mActionBarView = getLayoutInflater().inflate(
            R.layout.custom_action_bar, null);

    Button navDrawer = (Button) mActionBarView.findViewById(R.id.navDrawer);
    Button appIcon = (Button) mActionBarView.findViewById(R.id.appIcon);

    navDrawer.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(BaseActivty.this, "Drawer", Toast.LENGTH_LONG)
                    .show();

            mDrawerLayout.openDrawer(Gravity.LEFT);
        }
    });

    appIcon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Toast.makeText(BaseActivty.this, "Home", Toast.LENGTH_LONG)
                    .show();
        }
    });

    getActionBar().setCustomView(mActionBarView);
    getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

<强> custom_action_bar.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal" >
  <Button
    android:id="@+id/navDrawer"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:background="@drawable/ic_drawer"
    android:padding="5dp" />

  <Button
    android:id="@+id/appIcon"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:background="@drawable/ic_launcher" />
</LinearLayout>