Установите пользовательскую гравитацию actionbar на вправо

abs_layout.xml:

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

    <TextView
        android:id="@+id/mytext"
        style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:gravity="right"
        android:text="test"
        android:textColor="#474545"
        android:textSize="18sp" />

</LinearLayout>

когда я использую этот код для установки пользовательского ActionBar, все в порядке, и он отображается справа:

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

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

   LayoutInflater mInflater = getLayoutInflater();

    View mCustomView = mInflater.inflate(R.layout.abs_layout, null);
    TextView tv = mCustomView.findViewById(R.id.mytext);
    tv.setText("test");
    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    getSupportActionBar().setCustomView(mCustomView);

Я хочу, чтобы он был справа.

0
0
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

styles.xml

<resources>

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
</style>

 <style name="CustomTheme" parent="Theme.AppCompat.Light">

    <item name="contentInsetStart">0dp</item>
    <item name="contentInsetEnd">0dp</item>
  </style>

</resources>

custom_action_bar_layout.xml

<TableRow>

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/back"
        android:layout_gravity="center_vertical"
        android:background="@android:color/transparent"
        android:id="@+id/action_bar_back"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:gravity="center_horizontal"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textStyle="bold"
        android:padding="10dp"
        android:layout_alignParentTop="true"
        android:layout_weight="1"
        />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/forward"
        android:id="@+id/action_bar_forward"
        android:layout_gravity="center_vertical"
        android:background="@android:color/transparent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />


      </TableRow>

   </TableLayout>

Штрих-код настраиваемого действия Android

package com.journaldev.customactionbar;

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    getSupportActionBar().setDisplayShowCustomEnabled(true);
    getSupportActionBar().setCustomView(R.layout.custom_action_bar_layout);
    View view =getSupportActionBar().getCustomView();

    ImageButton imageButton= (ImageButton)view.findViewById(R.id.action_bar_back);

    imageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });

    ImageButton imageButton2= (ImageButton)view.findViewById(R.id.action_bar_forward);

    imageButton2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(),"Forward Button is clicked",Toast.LENGTH_LONG).show();
        }
    });
}

}

Примечание. Добавьте следующую строку в файл AndroidManifest.xml внутри тега приложения.

  android:theme="@style/CustomTheme"

это помогает тебе

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