Я хочу отобразить панель действий с настраиваемой компоновкой. Пользовательский макет имеет три ImageViews, один в центре и два других слева и справа от панели действий. Не должно быть кнопок возврата или действий.
Вот что я использовал:
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
ActionBar.LayoutParams lp = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);
View actionBarView = LayoutInflater.from(this).inflate(resource, null);
actionBar.setCustomView(actionBarView, lp);
Пользовательский макет завышен правильно, , но не занимает полную ширину экрана. Это происходит на Android 4.4.2 (KitKat). На Gingerbread вышеуказанное устройство работает правильно.
Я пробовал рекомендуемые решения в следующих обсуждениях:
- ActionBar - пользовательский вид с центрированным ImageView, Action Items по сторонам
- RelativeLayout/customview не заполняет ширину табуляции
Однако проблема остается. Должен быть способ заставить макет занимать полную ширину экрана.
Я использую панель действий из библиотеки V7 AppCompat. Кто-нибудь знает об этом?
РЕДАКТИРОВАТЬ 1:
Вот файл макета XML:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="fill_horizontal"
android:orientation="horizontal">
<ImageView
android:id="@+id/left_icon"
android:background="@drawable/leftbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:clickable="true"
android:onClick="leftButtonPressed"
android:hapticFeedbackEnabled="true"
/>
<ImageView
android:id="@+id/center_icon"
android:background="@drawable/centertitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:adjustViewBounds="true"
android:scaleType="centerInside"
/>
<ImageView
android:id="@+id/right_icon"
android:background="@drawable/rightbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:clickable="true"
android:onClick="rightButtonPressed"
android:hapticFeedbackEnabled="true"
/>
</RelativeLayout>
Вот как это выглядит на Gingerbread (2.3.5):
Строка действий с пряниками http://i62.tinypic.com/4utfu0.png
Как вы можете видеть, его правильно накачивать. И вот как это выглядит на Киткате (4.4.2):
Панель действий Kitkat http://i59.tinypic.com/vosfex.png
Вы можете видеть, что есть небольшой пробел справа, а макет не занимает полную ширину.
Я не верю, что проблема с макетом (правильно ее раздувание на Android 2.3.5), но я могу ошибаться. Скажи мне, сумасшедшая ли я.
ИЗМЕНИТЬ 2:
Благодаря Doctoror Drive и этот пост я смог получить результат, который я хотел. Я знаю его немного странно: зачем использовать панель действий, если у вас нет каких-либо элементов навигации или действий, но это то, что мне нужно для моей конкретной проблемы. У меня есть TabHost со стопкой скользящих Фрагментов на каждой вкладке, а верхняя LinearLayout (т.е. Панель действий) должна изменить свой внешний вид, когда отображаются различные фрагменты.
ИЗМЕНИТЬ 3:
Вот еще несколько ссылок для дальнейшего понимания: