【问题标题】:AppCompat v7-r23. Home button in Toolbar doesn't show by defaultAppCompat v7-r23。工具栏中的主页按钮默认不显示
【发布时间】:2015-09-19 19:03:09
【问题描述】:

我想在打开 MyActivity 时默认显示主页(汉堡)按钮。不幸的是,我在左上角没有看到任何按钮。但是在我打开和关闭抽屉后会出现主页按钮。

我使用最新的 appcompat-v7:23.0.1 库:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
}

我的活动:

public class MyActivity extends AppCompatActivity{

    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mDrawerToggle;

    private CharSequence mTitle;

    private Toolbar toolbar;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drawer);

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        if (toolbar != null) {
            setSupportActionBar(toolbar);

            getSupportActionBar().setHomeButtonEnabled(true);
        }

        mTitle = getTitle();

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerToggle = new ActionBarDrawerToggle(
                this,
                mDrawerLayout,
                toolbar,
                R.string.hello_world,
                R.string.app_name)
        {
            public void onDrawerClosed(View view) {
                super.onDrawerClosed(view);
                toolbar.setTitle(mTitle);
                invalidateOptionsMenu();
                syncState();
            }

            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                //toolbar.setTitle(mDrawerTitle);
                invalidateOptionsMenu();
                syncState();
            }
        };

        mDrawerLayout.setDrawerListener(mDrawerToggle);
    }
}

activity_drawer.xml:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    style="@style/MatchParent">

    <!-- Your normal content view -->
    <LinearLayout
        style="@style/MatchParent"
        android:orientation="vertical">

        <include layout="@layout/toolbar"/>

        <FrameLayout
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

    </LinearLayout>

    <FrameLayout
        android:layout_width="304dp"
        android:layout_height="match_parent"
        android:layout_gravity="left|start">

        <include layout="@layout/navigation_drawer" />

    </FrameLayout>

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

我尝试了以下变体来默认显示主页按钮:

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);

但它也不起作用。

例如,如果我只设置:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

然后当我打开活动并在打开和关闭抽屉后转换为主页按钮时,向上(箭头)按钮显示正确。

可能是什么问题?

提前致谢。

【问题讨论】:

    标签: android android-appcompat navigation-drawer


    【解决方案1】:

    如果您没有您的 Activity 的 onPostCreate 调用 syncState,或者没有调用 onConfigurationChangedonOptionsItemSelected对应于您的 Activity 回调,您应该这样做。

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        mDrawerToggle.syncState();
    }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mDrawerToggle.onConfigurationChanged(newConfig);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Pass the event to ActionBarDrawerToggle, if it returns
        // true, then it has handled the app icon touch event
        if (mDrawerToggle.onOptionsItemSelected(item)) {
          return true;
        }
        // Handle your other action bar items...
    
        return super.onOptionsItemSelected(item);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-29
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      相关资源
      最近更新 更多