2015-08-30 4 views
1

Запуск моего приложения с пользовательским ActionBar и двумя элементами панели действий, отображаемыми по-разному на разных устройствах. На одном устройстве элементы отображаются слева от логотипа панели действий, а на другом устройстве элементы действия отображаются справа.Элементы действия отображаются слева от панели действий.

Действие Вид бар:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background" 
    android:focusable="true"> 

<ImageView 
    android:id="@+id/btn_slide" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:background="@null" 
    android:scaleType="centerInside" 
    android:src="@drawable/logo_advanced" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true"/> 
</RelativeLayout> 

панель действий элементы:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:compat="http://schemas.android.com/apk/res-auto"> 

<!-- logout action --> 
<item android:id="@+id/action_logout" 
    android:icon="@drawable/logo1" 
    android:title="logout" 
    android:showAsAction="never" 
    compat:showAsAction="never" 
    /> 

<!-- go to position--> 
<item android:id="@+id/action_search_position" 
    android:icon="@drawable/position_a" 
    android:title="search_position" 
    android:showAsAction="always" 
    compat:showAsAction="always" 
    /> 

активность обратного вызова:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main_activity_actions, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

Динамически инициализации панели действий в OnCreate моей основной деятельности, которая простирается Activity:

 ActionBar actionBar=getActionBar(); 
     View mActionBarView = getLayoutInflater().inflate(R.layout.action_bar, null); 
     actionBar.setCustomView(mActionBarView); 
     actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
  • Единственное устройство, на котором элементы действия находятся слева от панели действий логотипа Galaxy 2 (старое устройство со встроенной в меню кнопки перелива). На этом устройстве также появились приложения WhatsApp и YouTube (в отличие от новых устройств с надлежащим внешним видом), но, с другой стороны, другие приложения, такие как Tinder и Gmail, сохраняются на всех устройствах одинаково.

Любая идея, почему?

+0

Я предполагаю, что это связано с тем, что на одном устройстве есть опция разработчика «Форматирование направления RTL». Проверьте его в приложении «Настройки» устройства. – Leo

+0

Не могли бы вы направить меня к этому варианту? Я не мог найти его. – user2162550

+0

Приложение «Открыть настройки» (одно устройство) -> прокрутите вниз до конца -> Параметры разработчика -> внимательно посмотрите на что-то вроде «Форматирование форматирования RTL». – Leo

ответ

0

Попробуйте использовать Toolbar вместо панели действий? Теперь это рекомендуемый способ добавления баров действий.

0

Попробуйте использовать этот код и расширяет ActionBarActivity вместо активности от поддержки AppCompat ActionBar библиотеки

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 
     <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      app:showAsAction="always" /> 
     <item android:id="@+id/action_compose" 
      android:icon="@drawable/ic_action_compose" 
      android:title="@string/action_compose" 
      app:showAsAction="always"/> 
</menu> 
Смежные вопросы