2014-10-20 2 views
30

Я не знаю, где я что-то пропустил, но я не могу установить свой логотип на своем экране действий. Мои AndroidManifest.xml:Логотип не отображается в панели действий, используя AppCompat

<application 
    android:icon="@drawable/application_icon" 
    android:label="@string/icon_name" 
    android:logo="@drawable/actionbar_logo" 
    android:theme="@style/PolarTheme"> 

А также я поставил свой логотип в своей деятельности тег в манифесте:

<activity 
    android:name=".Main" 
    android:theme="@style/PolarThemeLogo" 
    android:logo="@drawable/actionbar_logo" 
    android:windowSoftInputMode="adjustPan"> 
</activity> 

Это в моем themes.xml:

<style 
    name="PolarThemeLogo" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/mainColor500</item> 
    <item name="colorPrimaryDark">@color/mainColor700</item> 
    <item name="colorAccent">@color/accentColorA200</item> 

    <item name="actionBarStyle">@style/MyActionBarLogo</item> 
    <item name="android:windowContentOverlay">@null</item> 
</style> 

Мои styles.xml:

<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
    <item name="background">@color/mainColor500</item> 
    <item name="displayOptions">useLogo</item> 
</style> 

В моем Main.java:

public class Main extends ActionBarActivity { 

@SuppressLint("NewApi") 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  
    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setTitle(""); 
    actionBar.setDisplayUseLogoEnabled(true); 

Любые идеи?

ОБНОВЛЕНИЕ - решаемые

Я удалил все android:logo атрибуты из моего AndroidManifest.xml и я изменил свой стиль MyActionBarLogo так:

<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar"> 
    <item name="background">@color/mainColor500</item> 
    <item name="logo">@drawable/actionbar_logo</item> 
    <item name="displayOptions">useLogo|showHome</item> 
</style> 

Теперь ActionBar проявляет свой логотип. :)

+1

Документация Google, как всегда. –

+0

Я не верю, что вам нужно удалить андроид: логотип из вашего манифеста, стилей должно быть достаточно. –

+0

Почему вы не используете наследование стиля? Когда вы используете «.» как разделитель, стиль отбирает автоматическое от родителя. F.e: PolarTheme.Logo наследует от PolarTheme – Roel

ответ

24

Я удалил все андроид: логотип атрибуты из моего AndroidManifest.xml и я изменил свой стиль MyActionBarLogo так:

<style name="MyActionBarLogo" parent="@style/Widget.AppCompat.Light.ActionBar"> 
    <item name="background">@color/mainColor500</item> 
    <item name="logo">@drawable/actionbar_logo</item> 
    <item name="displayOptions">useLogo|showHome</item> 
    </style> 

Теперь ActionBar проявляет свой логотип. :)

+0

thanx zkminusck :) Теперь я вижу левую стрелку, логотип, а также заголовок в моей панели действий, используя «useLogo | showHome | showTitle». Но между стрелкой и логотипом есть пробел. Логотип ближе к названию, но видно отдельно от стрелки. Могу ли я переместить логотип немного рядом со стрелкой? – AndroidGuy

+0

Я думаю, вы можете, если используете новый виджет панели инструментов, и вы определяете для него собственный макет. Но сначала проверьте руководства по дизайну материалов, я думаю, это нормально, если у вас есть разрыв между стрелкой и логотипом. Также вы можете проверить свой логотип, возможно, у него слишком много дополнений слева. – zkminusck

+0

@zkminusck Мне тоже нужно сделать это, но с вкладками. Когда я пытаюсь выполнить код, отображается логотип, но вкладки исчезли. Возможно ли установить свойство navigationMode в указанной выше теме? –

24

Я использую следующий код, чтобы показать логотип, надеясь, что это будет полезно.

getSupportActionBar().setDisplayUseLogoEnabled(true); 
getSupportActionBar().setDisplayShowHomeEnabled(true); 
getSupportActionBar().setIcon(R.drawable.logo); 
+1

Yup, порядок инструкций кажется важным, ваши решения отлично работают – LucasFM

0

просто добавьте 3 строки в файл Java и не добавляйте код в манифест XML и Android.

getSupportActionBar().setDisplayUseLogoEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setIcon(R.mipmap.ic_launcher); 
Смежные вопросы