Как сделать так, чтобы элементы на ActionBar были такими, чтобы они были слева, один в центре и один справа?

я используюactionbarsherlock сделать это. Пример того, что я хочу в панели действий:
[ВХОД] [ЛОГОТИП КОМПАНИИ] [ФИЛЬТР]

Пример того, что я получаю в панели действий:
[ВХОД] [ЛОГОТИП КОМПАНИИ] [ФИЛЬТР]

Я создал кнопку входа, логотип компании и кнопку фильтра (в виде рисования) в Res / менюactivity_main.xml, Однако эти кнопки на панели действий не могут полностью сместиться влево, хотя я удалил логотип приложения по умолчанию и установил их наfalse:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled (false);

вот мои коды в менюactivity_main.xml:

<item android:id="@+id/login"
      android:icon="@drawable/login_btn"
      android:layout_gravity="left"
      android:showAsAction="always"/>

<item android:id="@+id/logo"
      android:icon="@drawable/logo_btn"
      android:layout_gravity="center"
      android:showAsAction="always"/>

<item android:id="@+id/filter"
      android:icon="@drawable/filter_btn"
      android:layout_gravity="right"
      android:showAsAction="always"/>

Ответы на вопрос(2)

android:layout_alignParentLeft
android:layout_alignParentCenter
android:layout_alignParentRight
Решение Вопроса

Вы должны создать собственный вид для этого. Например (layout/ab_custom.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_gravity="fill_horizontal" >

    <ImageButton
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:src="@drawable/left" />

    <ImageButton
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@drawable/center" />

    <ImageButton
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:src="@drawable/right" />

</RelativeLayout>

Тогда в вашей деятельностиonCreate вызвать этот метод:

private void showActionBar() {
        LayoutInflater inflator = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflator.inflate(R.layout.ab_custom, null);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled (false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setCustomView(v);
}

Чтобы взять под контроль свои товары, используйте это:

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.btn1:
            //left button, do something
            return true;
        case R.id.btn2:
            //center button
            return true;
        case R.id.btn3:
            // right button
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

РЕДАКТИРОВАТЬ: пересмотрел мой ответ. Лучше использоватьRelativeLayout as parent.

 ah gal20 окт. 2012 г., 06:08
Боже ты мой. оно работает!!! Огромное спасибо!!! : D
 saltandpepper07 нояб. 2017 г., 15:08
Я мог бы заставить это работать полностью используяonOptionsItemSelected, поэтому я сделал это с помощью настроек clicklisteners вручную.
 Jorge Gil23 февр. 2013 г., 01:58
На самом деле, правильный способ надуть это:getSupportActionBar().setCustomView(R.layout.ab_custom);
 dVaffection23 янв. 2015 г., 06:34
Как уйтиназад заглавие?
 Cris31 июл. 2015 г., 03:46
Добавление кнопок в пользовательский вид, подобный этому, не связывает их с механизмом выбора параметров в ActionBar, поэтому onOptionsItemSelected не будет вызываться при нажатии кнопок. Я пытался вручную добавить onClickListener, но это никогда не вызывается либо. Это можно обойти?

Ваш ответ на вопрос