将MenuItem添加到自定义ActionBar会导致ActionBar上项目的位移

时间:2018-02-04 09:31:34

标签: android android-actionbar android-menu

我创建了一个带有简单TextView的自定义ActionBar,文本应该与中心对齐。然后我用onCreateOptionsMenu方法添加了一个MenuItem。结果是每个组件都在ActionBar的每一侧,菜单项放在左角,文本视图放在右角。尽管向操作栏添加菜单项,如何使文本视图保持居中?

这是我的自定义action_bar_layout.xml

<?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:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/app_name"
        android:textColor="#ffffff"
        android:id="@+id/action_bar_text"
        android:textSize="18sp"/>

</LinearLayout>

这是我的menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.rashish.myapplication.MainActivity">

    <item
        android:id="@+id/back_action"
        android:orderInCategory="100"
        android:title="@string/back"
        app:showAsAction="always"/>

</menu>

这是我的onCreateOptionsMenu方法:

public boolean onCreateOptionsMenu(Menu menu) {
        this.mMenu = menu;
        getMenuInflater().inflate(R.menu.menu_main, mMenu);
        MenuItem item = menu.findItem(R.id.back_action);
        item.setVisible(true);

        return true;
    }

这就是我在onCreate方法

中使用自定义操作栏的方法
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

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

//MORE CODE

0 个答案:

没有答案