Выравнивание ActionBar по центру

У меня проблема с моим выравниванием в ActionBar.

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

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:layout_gravity = "center"
    android:orientation = "vertical">

    <TextView
        android:id = "@+id/action_bar_title"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_gravity = "center"
        android:textColor = "#fff"
        android:textSize = "24sp" />

    <ImageView
        android:id = "@+id/logo"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginTop = "-10dp"
        android:layout_marginBottom = "20dp"
        android:src = "@drawable/triptracker_logo"/>
</LinearLayout>

В моем классе Java:

    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    getSupportActionBar().setCustomView(R.layout.actionbar_layout);

Я думаю, что ваше объяснение неполное

Pranita 12.06.2019 13:29

почему бы не использовать простой макет. Вы не используете какие-либо специальные функции панели действий

Vivek Mishra 12.06.2019 13:32

если вы не используете какую-либо конкретную функциональность панели действий, просто включите этот макет в свой основной файл макета и скройте панель действий.

Abdul 12.06.2019 13:46
0
3
57
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Что я понял из вашего вопроса, так это то, что вы хотите, чтобы заголовок панели действий находился в центре независимо от значка. Используйте RelativeLayout вместо LinearLayout
Я надеюсь, что это сработает

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

<TextView
    android:id = "@+id/action_bar_title"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:layout_gravity = "center"
    android:gravity = "center"
    android:textColor = "#fff"
    android:textSize = "24sp" />

<ImageView
    android:id = "@+id/logo"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:layout_marginTop = "-10dp"
    android:layout_marginBottom = "20dp"
    android:src = "@drawable/triptracker_logo"
    android:layout_alignParentRight = "true"
    android:layout_centerVertical = "true"
    android:layout_centerInParent = "true"/>
</RelativeLayout>

В этом примере TextView текст будет выровнен по левому краю, а не по центру

Chirag Savsani 12.06.2019 13:34

о, извините, добавьте это в текстовое представление android:gravity = "center"

Abdul 12.06.2019 13:36

Используйте RelativeLayout в качестве корневого макета вместо LinearLayout

android:layout_centerInParent = "true" для текстового просмотра

android:layout_alignParentEnd = "true" для ImageView, чтобы установить его в конце

<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_gravity = "center">

        <TextView
            android:text = "Helo"
            android:layout_centerInParent = "true"
            android:id = "@+id/action_bar_title"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:layout_gravity = "center"
            android:textColor = "#fff"
            android:textSize = "24sp" />

        <ImageView
            android:id = "@+id/logo"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:layout_marginTop = "-10dp"
            android:layout_marginBottom = "20dp"
            android:src = "@drawable/star"
            android:layout_centerVertical = "true"
            android:layout_alignParentEnd = "true"/>
    </RelativeLayout >

Попробуй это...

   <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:layout_gravity = "center"
        android:background = "#b19d9d"
        android:orientation = "horizontal">

        <FrameLayout
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content">

            <ImageView
                android:id = "@+id/logo"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:layout_gravity = "center_vertical|center_horizontal"
                android:src = "@drawable/ic_male" />

            <LinearLayout
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:layout_gravity = "right|end"
                android:gravity = "right|end"
                android:orientation = "horizontal">

                <TextView
                    android:id = "@+id/action_bar_title"

                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:layout_gravity = "center"
                    android:gravity = "right|center_vertical"
                    android:text = "HELLO WORLD"

                    android:textColor = "#fff"
                    android:textSize = "24sp" />

            </LinearLayout>


        </FrameLayout>

    </LinearLayout>

Другие вопросы по теме