我有一些具有不同actionBar布局的屏幕,并尝试将每个actionBar的标题居中。这是我的布局:
actionbar_layout.xml
<?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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:text="Control"
android:textColor="@color/fragment_title_font"
android:id="@+id/fragmentTitle"
android:textSize="14sp" />
<com.joanzapata.iconify.widget.IconButton
android:id="@+id/buttonActionbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:visibility="gone"
android:background="@drawable/button_actionbar"
android:text=""
android:singleLine="true"
android:textColor="#ffffffff"
android:textSize="12sp"/>
</RelativeLayout>
这是显示我的自定义actionBar的代码:
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
LayoutInflater mInflater = LayoutInflater.from(context);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setCustomView(mInflater.inflate(R.layout.actionbar_layout, null),
new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.MATCH_PARENT,
Gravity.CENTER
));
如果屏幕没有左侧UpButton但右侧按钮,它看起来也很好:
在所有情况下都有可能将我的头衔集中在一起吗?
编辑:@tynn的建议仅适用于我的第三个案例。好吧,没什么,谢谢!答案 0 :(得分:1)
您的标题在所有情况下都居中,只是按钮重叠。如果要将TextView
相对于按钮居中,则需要相对于按钮进行布局定义,而不是相对于父布局居中。
使用LinearLayout
实现目标的一种可能方法(对RelativeLayout
执行相同操作应该是直截了当的,但更详细一点)
<?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="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/fragmentTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="Control"
android:textColor="@color/fragment_title_font"
android:textSize="14sp" />
<com.joanzapata.iconify.widget.IconButton
android:id="@+id/buttonActionbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:visibility="gone"
android:background="@drawable/button_actionbar"
android:text=""
android:singleLine="true"
android:textColor="#ffffffff"
android:textSize="12sp"/>
</LinearLayout>
如果您这样做,则不应明确设置LayoutParams
,如果您不使用ActionBar.LayoutParams.WRAP_CONTENT
作为宽度
actionBar.setCustomView(R.layout.actionbar_layout);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
答案 1 :(得分:0)
你有没有试过改变这个:
actionBar.setCustomView(mInflater.inflate(R.layout.actionbar_layout, null),
new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.MATCH_PARENT,
Gravity.CENTER));
到此:
actionBar.setCustomView(mInflater.inflate(R.layout.actionbar_layout, null),
new ActionBar.LayoutParams(
ActionBar.LayoutParams.MATCH_PARENT,
ActionBar.LayoutParams.MATCH_PARENT));