2015-02-28 3 views
0

Я пытаюсь использовать NavigationDrawer с appcompat и панель действий. Мой NavDrawer работает, как путем скольжения слева, так и прикосновения к панели действий.Навигация Ящик ic_drawer и логотип не вместе на панели действий

В the navigation drawer sample apphome icon на панели действий показан в том же «контейнере», что и 3-полосный, который указывает, что есть боковое меню. Но в моем приложении home icon показан за пределами этого «контейнера» ... Я загружаю фотографии, чтобы лучше объяснить, что происходит. Кроме того, home icon появляется намного больше, чем в образце приложения Google, несмотря на то, что он имеет одинаковый размер (96x96 при xhdpi). Исходный файл ic_drawer в обоих приложениях одинаковый.

Я не хочу использовать тот же чертеж, что и значок запуска приложения.

На обоих скриншотах, я коснувшись ActionBar открыть нав ящик (см выделенный квадрат): here is how it looks now here is how I want it

мой манифест:

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/icon" 
    android:label="@string/app_name" 
    android:theme="@style/MyAppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

мой стиль:

<resources> 
<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="actionBarStyle">@style/MyActionBar</item> 
</style> 
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> 
    <item name="titleTextStyle">@style/TitleTextStyle</item> 
    <item name="background">@color/black</item> 
    <item name="logo">@drawable/actionbar_logo</item> 
    <item name="displayOptions">useLogo|showHome|showTitle</item> 
</style> 
<style name="TitleTextStyle" 
    parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> 
    <item name="android:textColor">#FFFFFF</item> 
</style> 
</resources> 

my MainActivity's onCreate:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_activity); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setHomeButtonEnabled(true); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerToggle = new android.support.v4.app.ActionBarDrawerToggle(
      this, mDrawerLayout, R.drawable.ic_drawer, R.string.app_name, R.string.app_name) { 
     public void onDrawerClosed(View view) { 
     } 

     public void onDrawerOpened(View drawerView) { 
     } 
    }; 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 
} 

Спасибо за любую помощь по этому вопросу.

+0

Вы используете приложение compat 21? –

+0

@GabrieleMariotti да, com.android.support:appcompat-v7:21.0.3 –

ответ

1

Приложение примера ящика навигации отображает старый ActionBarDrawerToggle, используемый с api < 21. Этот пример должен быть обновлен.

С новым апплексом 21 шаблон изменяется.

Панель действий следует принципам проектирования материалов и использует панель инструментов. Как вы можете прочитать here:

The use of application icon plus title as a standard layout is 
    discouraged on API 21 devices and newer. 

Если вы хотите значок приложения, вы можете использовать метод setLogo().

Вы должны прочитать это official post.

Обратите внимание: android.support.v4.app.ActionBarDrawerToggle. Этот класс устарел. Вы должны использовать new class, который работает с новой панелью инструментов.

+0

Спасибо. Если я использую 'setLogo()', он отображает логотип так же, как и на первом изображении (вне квадрата, на который можно щелкнуть). Я все еще хочу сохранить старый логотип + шаблон заголовка ... –

+1

обновлен до 'v7.app.ActionBarDrawerToggle' –

+0

так что это за решение? – dit

Смежные вопросы