2015-04-27 4 views
0

Я не могу добавить логотип в ActionBar независимо от того, что я пытаюсь.Пользовательский логотип в ActionBar рядом с выдвижным ящиком

Вот мой OnCreate метод:

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.feedview); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    title = drawerTitle = getTitle(); 

    drawerItemsList = getResources().getStringArray(R.array.nav_drawer_items); 
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawerList = (ListView) findViewById(R.id.left_drawer); 

    //add the items to the navigation drawer here 
    navDrawerItems = new ArrayList<NavigationDrawerItem>(); 
    navDrawerItems.add(new NavigationDrawerItem(R.drawable.ic_account_circle_black_24dp, ParseUser.getCurrentUser().getUsername(), "")); 
    navDrawerItems.add(new NavigationDrawerItem(R.drawable.ic_action_social_add, drawerItemsList[1], "")); 
    navDrawerItems.add(new NavigationDrawerItem(R.drawable.ic_action_reqs, drawerItemsList[2], "")); 
    navDrawerItems.add(new NavigationDrawerItem(R.drawable.ic_settings_power_black_24dp, drawerItemsList[3], "")); 

    //set adapter 
    adapter = new NavigationDrawerListAdapter(this, R.layout.drawer_list_item, navDrawerItems); 
    drawerList.setAdapter(adapter); 
    drawerList.setOnItemClickListener(new DrawerItemClickListener()); 

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    getActionBar().setHomeButtonEnabled(true); 
    getActionBar().setDisplayUseLogoEnabled(true); 
    getActionBar().setLogo(R.drawable.ic_logo_wide); 

    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close); 
    drawerLayout.setDrawerListener(drawerToggle); 

    generateListView(); 

swipeRefresh = (SwipeRefreshLayout) findViewById(R.id.swipe_container); 
    swipeRefresh.setColorSchemeResources(R.color.white, R.color.black, R.color.gray); 
    swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        generateListView(); 
        swipeRefresh.setRefreshing(false); 
       } 
      }, 2500); 
     } 
    }); 

} 

и мой заказ Тема:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="OrangeActionBarTheme" 
    parent="@android:style/Theme.Holo.Light.DarkActionBar"> 
    <item name="android:actionBarStyle">@style/OrangeActionBar</item> 
    <item name="android:actionMenuTextColor">#ffffff</item> 
    <item name="actionMenuTextColor">#ffffff</item> 
    </style> 

<!-- ActionBar styles --> 
<style name="OrangeActionBar" 
    parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@drawable/ab_solid</item> 
</style> 

Мой логотип не будет отображаться. Я попытался установить элемент логотипа в своей теме и установить displayOptions на useLogo|showHome, но это просто скрывает все, что должно быть в пространстве логотипа/заголовка во всех действиях. Я попытался добавить атрибут android:logo в манифест без толку. Ничего не видно, и я не уверен, в чем проблема.

Я думаю, что это может быть связано с переключением моего ящика, но я не могу правильно диагностировать проблему. Любая идея, почему мой логотип не появляется в панели действий и что я могу сделать, чтобы исправить это? Благодаря!

Редактировать: Я нацелен на SDK версии 11+. Кроме того, я добавил, как выглядит мой ActionBar. Он отображает метку, а не логотип, а если удалить ярлык он показывает имя класса:

My ActionBar

+0

Значит, ваша цельSDKVersion меньше 21? – Xcihnegn

+0

@ Xcihnegn Извините, я добавил эти данные. Да, я нацелен на 11+. –

+0

Добавить 'getActionBar(). SetHomeButtonEnabled (true);' – Xcihnegn

ответ

0

Вы не можете иметь логотип здесь, потому что вы используете панель навигации. Для этого есть рекомендуемый дизайн, и ActionBarDrawerToggle реализует его. Было бы странно иметь логотип приложения вместе с значком навигации. Чтобы иметь значок приложения в панели действий, используйте шаблон приложения без NavigationDrawer

0

Вы рассмотрели использование панели инструментов в библиотеке поддержки (вместе с AppCompatActivity или AppCompatDelegate)? Он доступен из библиотеки поддержки V7, и вы можете настроить ActionBar на панель инструментов, используя setSupportActionBar(Toolbar). Вам также необходимо наследовать стиль AppCompat.NoActionBar.

Вы можете иметь значок рядом с NavigationDrawerToggle, как это:

<android.support.v7.widget.Toolbar android:id="@+id/home_toolbar" android:layout_width="match_parent" android:layout_height="56dip" android:background="@color/white"> 

    <ImageView android:layout_width="56dip" android:layout_height="56dip" android:src="@drawable/ic_launcher" /> 

</android.support.v7.widget.Toolbar> 

Хотя вам необходимо изменить настройку названия, потому что это, по всей видимости слева от значка по умолчанию. Вы можете просто добавить текстовое представление на панель инструментов и установить его как любой другой TextView, и ваш ImageView может содержать почти что угодно.

Если вы не можете использовать AppCompatActivity, в последней версии библиотеки поддержки был введен интерфейс AppCompatCallback и абстрактный класс AppCompatDelegate на прошлой неделе, который вы можете использовать с обычными действиями. Я еще не пробовал его, но он предназначен для обеспечения нормальной работы функций поддержки. Это дает пример использования: https://medium.com/google-developer-experts/how-to-add-toolbar-to-an-activity-which-doesn-t-extend-appcompatactivity-a07c026717b3

Очевидно, что этот подход имеет свои недостатки, но этого достичь можно!

+0

Спасибо, но я не хочу добавлять иконку, а скорее полный логотип. –

+0

Вы можете поместить что-нибудь в ImageView, а не только значок. Панель инструментов позволяет вам добавить почти что-нибудь –

+0

Я вижу. Я сделаю это, хотя я почему-то не могу использовать AppCompat. Я думаю, что это требует, чтобы мои действия расширяли его, но мне нужно расширить что-то еще для моего бэкэнда. Я попробую еще раз. Есть ли альтернативный способ настроить его? –

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