アプリにナビゲーションドロワーを追加しようとしています。すべて正常に機能していますが、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);
}
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>
私はオンラインでさまざまなコードサンプルを見てきましたが、それらはすべて同じことをしています。なぜそれが私のために働いていないのか分かりません。
助けてください。
あなたは使用する必要があります
getActionBar().setDisplayShowHomeEnabled(true);
の代わりに
getActionBar().setDisplayShowHomeEnabled(false);
乾杯、
フェリックス
編集: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>
次に、これをAndroidManifest.xmlで定義したテーマに追加します(標準は/res/values-v11/styles.xmlのAppBaseThemeです-AppBaseTheme:
<item name="Android:actionBarStyle">@style/ActionBarStyle</item>
お役に立てれば!
このコードを試してください
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
actbardrawertoggle.syncState();
}
これは、メニューアイコンを戻る矢印から戻したいときにうまくいきました
private void updateNavigationIcon() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0
&& getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
toggle.syncState();
}
}
ShowGlobalContextActionBar()メソッド(NavigationDrawerFragment.Javaクラス)内に次の行を追加するだけです。
actionBar.setHomeAsUpIndicator(R.drawable.ic_action_menu);
コードスニペット:
private void showGlobalContextActionBar() {
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_action_menu);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setTitle(R.string.app_name);
}