如何在不使用自定义视图的情况下将操作栏标题与中心对齐

时间:2016-09-15 11:03:11

标签: android android-actionbar

我希望在没有自定义视图帮助的情况下将操作栏标题与中心对齐。我将不胜感激任何帮助。

不使用自定义视图,仅修改默认操作栏标题

3 个答案:

答案 0 :(得分:4)

使用ActionBar时,您可以将标题与中心对齐,但您可以使用Toolbar执行此操作。

ToolbarActionBar更实用,更简单,您可以使用此布局为您的活动定义中心标题TextView

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="40dip">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/app_name" />

</android.support.v7.widget.Toolbar>

并使用此代码作为后退按钮:

protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.activity_toolbar);

    Toolbar toolbar = (Toolbar) findViewById(R.id.single_toolbar);
    setSupportActionBar(toolbar);
    ActionBar actionBar = getSupportActionBar();
    if(actionBar != null)
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

您还需要覆盖菜单的onCreateOptionsMenu方法,您可以参考此项目:chrisbanes/cheesesquare

答案 1 :(得分:1)

好的,你可以试试这个:

SELECT ADD_DAYS (TO_DATE ('2009-12-05', 'YYYY-MM-DD'), 30) "add days" FROM DUMMY;

请记住在活动的java代码中添加此行:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" >
        <TextView
            android:textColor="#fff"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_gravity="center"
            android:text="@string/app_name" />
    </android.support.v7.widget.Toolbar>

答案 2 :(得分:0)

如果没有自定义视图,似乎无法执行此操作。您可以获得标题视图:

View decor = getWindow().getDecorView();
TextView title = (TextView) decor.findViewById(getResources().getIdentifier("action_bar_title", "id", "android"));

但改变重力或layout_gravity并没有效果。 ActionBarView中的问题,它自己布局其子项,因此更改其子项的布局参数也没有效果。要查看以下代码:

ViewGroup actionBar = (ViewGroup) decor.findViewById(getResources().getIdentifier("action_bar", "id", "android"));
View v = actionBar.getChildAt(0);
ActionBar.LayoutParams p = new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
p.gravity= Gravity.CENTER;
v.setLayoutParams(p);
v.setBackgroundColor(Color.BLACK);