0

FIXEDAndroid Custom Action Bar LinearLayout с равноудаленных кнопками

Я исправил эту проблему, просто удалив панель действий и с помощью панели инструментов в поддержку библиотеки вместо этого. Я добавил панель инструментов в файл XML моей активности. Более того, я удалил по умолчанию paddings моего корневого представления (RelativeLayout), которые были созданы в Studio Studio для создания активности и изначально не были уведомлены мной. Furhtermore, я использовал «match_parent» вместо «0dp» в качестве ширины кнопки изображения.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".BluetoothConnectionManager"> 

<android.support.v7.widget.Toolbar android:id="@+id/tbMenu" 
    xmlns:application="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    android:background="@color/hafnertec" 
    android:layout_alignParentTop="true"> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_marginRight="12dp" 
     android:orientation="horizontal"> 

     <ImageButton android:id="@+id/miBluetoothConnection" 
      android:src="@drawable/ic_action_bluetooth_searching" 
      android:background="@drawable/selector_menu_button" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="2" 
      android:scaleType="centerInside" 
      android:onClick="showDialogueCloseBluetoothConnection"/> 

     <ImageButton android:id="@+id/miHome" 
      android:src="@drawable/ic_action_bluetooth_searching" 
      android:background="@drawable/selector_menu_button" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="2" 
      android:scaleType="centerInside" 
      android:onClick="switchToHomeFragment"/> 

     <ImageButton android:id="@+id/miGraphsBurnOffCurves" 
      android:src="@drawable/ic_action_bluetooth_searching" 
      android:background="@drawable/selector_menu_button" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="2" 
      android:scaleType="centerInside" 
      android:onClick="switchToBurnOffGraphsFragment"/> 

     <ImageButton android:id="@+id/miConfigurationMode" 
      android:src="@drawable/ic_action_bluetooth_searching" 
      android:background="@drawable/selector_menu_button" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="2" 
      android:scaleType="centerInside"/> 

     <ImageButton android:id="@+id/miExpertMode" 
      android:src="@drawable/ic_action_bluetooth_searching" 
      android:background="@drawable/selector_menu_button" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight="2" 
      android:scaleType="centerInside"/> 
    </LinearLayout> 

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

ORIGINAL ВОПРОС

Я пишу Android приложение, которое делает использование панели пользовательского действия. Я хочу, чтобы эта панель действий отображала пять кнопок, которые равномерно распределены. Для решения этой задачи я использую следующий XML-файл (как значки все еще находятся в работе всех кнопки один и тот же значок.):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_gravity="fill_horizontal" 
android:layout_width="match_parent" 
android:layout_height="?attr/actionBarSize" 
android:orientation="horizontal"> 

<ImageButton android:id="@+id/miBluetoothConnection" 
    android:src="@drawable/ic_action_bluetooth_searching" 
    android:background="@drawable/selector_menu_button" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:scaleType="centerInside" 
    android:onClick="showDialogueCloseBluetoothConnection"/> 

<ImageButton android:id="@+id/miHome" 
    android:src="@drawable/ic_action_bluetooth_searching" 
    android:background="@drawable/selector_menu_button" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:scaleType="centerInside" 
    android:onClick="switchToHomeFragment"/> 

<ImageButton android:id="@+id/miGraphsBurnOffCurves" 
    android:src="@drawable/ic_action_bluetooth_searching" 
    android:background="@drawable/selector_menu_button" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:scaleType="centerInside"/> 

<ImageButton android:id="@+id/miConfigurationMode" 
    android:src="@drawable/ic_action_bluetooth_searching" 
    android:background="@drawable/selector_menu_button" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:scaleType="centerInside"/> 

<ImageButton android:id="@+id/miExpertMode" 
    android:src="@drawable/ic_action_bluetooth_searching" 
    android:background="@drawable/selector_menu_button" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:scaleType="centerInside"/> 
</LinearLayout> 

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

Action bar displayed by the designer

Action bar on my testing device

Я также попытался обертывание мою LinearLayout в RelativeLayout, а также с использованием TableLayout. Однако не все это работает. Используя RelativeLayout, пятая кнопка не такая большая, как другие.

Для добавления панели действий в моем приложении я использую следующий код:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    ... 
    // add the custom action bar 
    this.abMainMenu = this.getSupportActionBar(); 
    this.abMainMenu.setDisplayShowCustomEnabled(true); 
    LayoutInflater liAddActionBar = LayoutInflater.from(this); 
    this.customActionBar = liAddActionBar.inflate(ApplicationSettings.LAYOUT_REFERENCE_MAIN_MENU, null); 
    this.abMainMenu.setCustomView(this.customActionBar); 
    ... 
} 

Я тестирование на Samsung Galaxy S I9000 с CyanogenMod 11 скриншоте декабря (Android 4.4.4).

Я ценю любую помощь!

Спасибо,

Lukas

+0

Я попытался реализовать это решение в своем макете, но я получаю следующую проблему: «Caused by: java.lang.ClassNotFoundException: не нашел класс« android.support.v7.widget.Toolbar »по пути:/data/app/com.adapta-2.apk в dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:65) «... как я могу решить эту ситуацию? Спасибо – KryNaC

+0

Мне кажется, что вы забыли включить библиотеку поддержки Android. Надеюсь, что [учебник Google] (https://developer.android.com/tools/support-library/setup.html) может дать вам дополнительные инструкции, включая библиотеку. Если нет, пожалуйста, дайте мне знать. – Lukas

ответ

0

Вы пытались использовать панель инструментов?

+0

Я следил за этим руководством: https://chris.banes.me/2014/10/17/appcompat-v21/ Однако у меня остались те же проблемы с компоновкой. – Lukas

+0

Вам не нужно вызывать метод seSupportActionBar в вашем случае. Просто рассматривайте панель инструментов как любой другой макет. В ins styles.xml выберите тему без панели действий. – Simar

+0

Также вы не установили атрибут weightSum в корневом макете. И ширина каждой кнопки должна соответствовать родительскому, чтобы вес работал. – Simar