Как разместить две кнопки на панели действий? Один в начале и один в конце - PullRequest
0 голосов
/ 09 июля 2019

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

Мой XML:

<?xml version="1.0" encoding="utf-8"?>

<item
    android:id="@+id/Menu"
    android:orderInCategory="0"
    android:title="@string/Menu"
    app:showAsAction="always" />

<item
    android:id="@+id/Bucket"
    android:title="@string/Bucket"
    app:showAsAction="always"
    android:orderInCategory="1"/>

Что у меня сейчас есть:

two muppets

Чего я хочу добиться:

two muppets

РЕДАКТИРОВАТЬ: создал панель пользовательских действий и пытаюсь надуть ее, однако я получаю нольисключение указателя и исключение времени выполнения в четвертой и пятой строках нового добавленного кода:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pogolemotoproektce, PID: 8377
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pogolemotoproektce/com.example.pogolemotoproektce.HomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayOptions(int)' on a null object reference

Это добавленный код:

    final ActionBar actionBar = getActionBar();
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.custom_action_bar, null);
    actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

Ответы [ 3 ]

2 голосов
/ 09 июля 2019

Вы можете создать собственную панель инструментов, как это -

<androidx.appcompat.widget.Toolbar
        android:background="@android:color/holo_blue_bright"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize">

        <LinearLayout
                android:layout_marginEnd="8dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

            <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="start"
                    android:text="Menu" />

            <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="end"
                    android:text="Bucket" />
        </LinearLayout>

</androidx.appcompat.widget.Toolbar>

В результате -

Sample Toolbar

1 голос
/ 09 июля 2019

Можете ли вы взглянуть на эти две ссылки:

Пользовательский стиль макета Android ActionBar

или

Панель действий Android с двумя растянутыми кнопками

Лучший способ добиться чего-то подобного - реализовать собственный настраиваемый вид в виде панели действий.

0 голосов
/ 09 июля 2019

Проблема решена путем создания настраиваемой панели действий и ее раздувания.Ошибка нулевого указателя и ошибка времени выполнения были устранены путем замены ошибочного кода, упомянутого в редактировании, следующим фрагментом:

    getSupportActionBar().setDisplayShowHomeEnabled(false);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    final LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.custom_action_bar,null);
    getSupportActionBar().setCustomView(view);
    getSupportActionBar().setDisplayShowCustomEnabled(true); 

Код, скопированный и отредактированный из ответа на следующий вопрос: Действие Androidпанель с двумя растянутыми кнопками

...