ActionBarDrawerToggle未设置抽屉指示器

mud*_*dit 14 android navigation-drawer

我试图在我的应用程序中添加导航抽屉..一切正常但现在我仍然有箭头图标虽然我用Android的ic_drawer替换它?这是我的代码:

private ActionBarDrawerToggle mDrawerToggle;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    ExpandableListView mDrawerList = (ExpandableListView) findViewById(R.id.left_drawer);

    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
            GravityCompat.START);
    mDrawerList.setAdapter(new DrawerListAdapter(this));
    mDrawerList.setOnChildClickListener(new DrawerItemClickListener());

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.drawable.ic_launcher, R.string.drawer_open,
            R.string.drawer_close);

    Log.d("Mudit",
            "mDrawerToggle" + mDrawerToggle.isDrawerIndicatorEnabled()); // returns true

    mDrawerLayout.setDrawerListener(mDrawerToggle);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    getActionBar().setDisplayShowHomeEnabled(false);

}

/**
 * When using the ActionBarDrawerToggle, you must call it during
 * onPostCreate() and onConfigurationChanged()...
 */

@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)

XML:

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

    <ScrollView
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

        </LinearLayout>
    </ScrollView>

    <ExpandableListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#ffffff"
        android:dividerHeight="0dp" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

我在线查看了各种代码示例,但所有代码都在做同样的事情.我不知道为什么它不适合我.

请帮忙.

fek*_*kle 22

你必须使用

getActionBar().setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)

代替

getActionBar().setDisplayShowHomeEnabled(false);
Run Code Online (Sandbox Code Playgroud)

干杯,

费利克斯

编辑:这是如何通过XML隐藏图标:

将此添加到styles.xml :(如果您使用的是深色操作栏,请将android:Widget.Holo.Light.ActionBar.Solid替换为android:Widget.Holo.ActionBar.Solid)

<style name="ActionBarStyle" parent="android:Widget.Holo.Light.ActionBar.Solid">
    <item name="android:icon">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后将其添加到您在AndroidManifest.xml中定义的主题(标准是/res/values-v11/styles.xml中的AppBaseTheme - AppBaseTheme:

<item name="android:actionBarStyle">@style/ActionBarStyle</item>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


Sun*_*mar 22

试试这段代码

   @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        // Sync the toggle state after onRestoreInstanceState has occurred.
        actbardrawertoggle.syncState();
    }
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,我有一个"<"而不是"汉堡包"(ic_drawer)图标.覆盖onPostCreated后,它显示ic_drawer而不是"<". (6认同)