我希望在没有自定义视图帮助的情况下将操作栏标题与中心对齐。我将不胜感激任何帮助。
不使用自定义视图,仅修改默认操作栏标题
答案 0 :(得分:4)
使用ActionBar
时,您可以将标题与中心对齐,但您可以使用Toolbar
执行此操作。
Toolbar
比ActionBar
更实用,更简单,您可以使用此布局为您的活动定义中心标题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);