【问题标题】:Home button not showing up in navigation drawer android主页按钮未显示在导航抽屉android中
【发布时间】:2015-06-14 16:53:22
【问题描述】:

我在一个项目中使用navigation drawer,一切正常,但有一个小问题,我总是显示arrow 不显示home 按钮。 我尝试了在文档、论坛中找到的所有内容,但实际上没有任何效果。

到目前为止我尝试了什么:

mDrawerToggle.syncState(); 
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);




@Override
    public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onPostCreate(savedInstanceState, persistentState);
        mNavigationDrawerFragment.getmDrawerToggle().syncState();
    }

ActionBar actionBar = getSupportActionBar();


actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setTitle(mTitle);

NavigationDrawerFragment:

// Defer code dependent on restoration of previous instance state.
        mDrawerLayout.post(new Runnable() {
            @Override
            public void run() {
                mDrawerToggle.syncState();
            }
        });

【问题讨论】:

  • 你的意思是你看到了一个箭头?
  • 是的,一直是后退箭头
  • 点击后退箭头会发生什么?
  • 它会显示抽屉,但正常行为它也必须显示“humberger”图标
  • stackoverflow.com/a/30490289/3498931 看看我给出的这个答案.. 这应该可以解决你的问题.. 我可以在这里发布答案,但我不想因为我拥有的相同知识而获得声誉..另外..关于这个主题有很多答案..您只需要再搜索一下..如果链接的答案不起作用,请告诉我..谢谢

标签: android navigation navigation-drawer


【解决方案1】:

我一直在忙着用导航抽屉制作一个简单的应用程序..不要使用模板有不推荐使用的方法.. 这完全有效..我创建了这个例子..试试这个..

你的 MainActivity

public class MainActivity extends ActionBarActivity {

   Toolbar toolbar;


  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = (Toolbar) findViewById(R.id.app_toolbar);
    setSupportActionBar(toolbar);


    Profile profile = (Profile) getSupportFragmentManager().findFragmentById(R.id.profileFragmentInMain);
    profile.setUp((DrawerLayout) findViewById(R.id.drawer),toolbar);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    return super.onOptionsItemSelected(item);
}

这是你的片段..

public class Profile extends Fragment {

ActionBarDrawerToggle drawerToggle;
DrawerLayout mDrawerLayout;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.profile, container, false);
    return view;
}

public void setUp(DrawerLayout drawerLayout, Toolbar toolbar) {

    mDrawerLayout = drawerLayout;
    drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.open, R.string.close){

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            getActivity().invalidateOptionsMenu();
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {

            if (item != null && item.getItemId() == android.R.id.home) {
                if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
                    mDrawerLayout.closeDrawer(Gravity.RIGHT);
                } else {
                    mDrawerLayout.openDrawer(Gravity.RIGHT);
                }
                return true;
            }
            return false;
        }

    };
    mDrawerLayout.setDrawerListener(drawerToggle);


    mDrawerLayout.post(new Runnable(){

        @Override
        public void run(){

            drawerToggle.syncState();
        }

    });
}
}

这一切都在课堂上..

现在是 xml 布局..

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/drawer"
android:layout_height="match_parent" >


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <include
        android:id="@+id/app_toolbar"
        layout="@layout/toolbar"/>
</LinearLayout>

<fragment
    android:id="@+id/profileFragmentInMain"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:layout="@layout/profile"
    android:name="com.example.ajay.myapplication.Profile"
    tools:layout="@layout/profile"/>

</android.support.v4.widget.DrawerLayout>

你的 profile.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:theme="@android:style/Theme.Holo.Light.DialogWhenLarge.NoActionBar">

</LinearLayout>

您的工具栏.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/app_toolbar" />

预览:

打开抽屉

关闭的抽屉

附加信息:我添加了工具栏,它是 ActionBar 的 Material Design 实现。它是创建 Actionbar 的最新方法。你可以用那个。以防万一,请在您的 styles.xml 文件中选择带有 NoActionbBar 的主题。

【讨论】:

  • 都是Android studio模板自动实现的
  • 我更新了我的答案.. 不要使用模板.. 它大部分已弃用.. 这是抽屉布局的简单示例,带有切换工作.. 我已经测试并运行它.. 完全正常工作。 .
  • 你只需要复制粘贴就行了..希望你学习并尝试理解..它..
【解决方案2】:

所以我终于找到了解决方案。我刚刚从以下R.drawable.ic_drawer 获取:

 drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, R.drawable.ic_drawer, R.string.open, R.string.close);

它就像一个魅力。

【讨论】:

  • 感谢您的努力,我提到过,但这不是我想要的。这条评论没用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多