我试图中心在Android操作栏上的图标。 我使用的是对左侧的按钮,在中心的图标,在右侧的菜单选项自定义布局。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ActionBarWrapper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageButton
android:id="@+id/slideMenuButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_menu_bookmark" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerInParent="true" >
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:layout_centerInParent="true" />
</RelativeLayout>
</RelativeLayout>
我已经试过这与不RelativeLayout的包裹ImageView的。 左边的按钮精细显示出来,而且我可以layout_toRightOf设置图标,但我不能得到它的中心。 有人有主意吗?
编辑:这是在上创建方法android的代码。
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayOptions(actionBar.DISPLAY_SHOW_CUSTOM);
View cView = getLayoutInflater().inflate(R.layout.actionbar, null);
actionBar.setCustomView(cView);
好的。 这应该工作。 试试这个( 在正常活动测试 ):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ActionBarWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/slideMenuButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:layout_alignParentLeft="true" />
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:layout_centerVertical="true"
android:layout_centerInParent="true" />
</RelativeLayout>
以前的答案不为我工作(在Android 4.4系统的设备),因为外部容器视图组并没有扩展到满,所以容器组和中心内的标志已经在标题栏中左对齐。
我发现,与常规的操作栏菜单工程(在右侧)的布局也不管使常规操作栏标志和称号(在左边)。 这个例子只是中心的附加标志。
<?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"
>
<View android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
/>
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_logo"
android:layout_gravity="center_vertical"
android:contentDescription="Logo"
/>
<View android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
/>
</LinearLayout>
您必须启用该自定义视图
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowCustomEnabled(true);
View cView = getLayoutInflater().inflate(R.layout.actionbar, null);
actionBar.setCustomView(cView);
但不是这种方法(它禁用动作列的所有其它元件)。
// actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
您可以添加自定义视图的操作栏。 只需添加一个LinearLayout中的自定义视图,并添加子欣赏到的LinearLayout。 我用这种方法来添加4个按钮就在中间。
要添加自定义视图使用actionBar.setCustomView(视图)。 同时设定使用actionBar.setDisplayOptions选项DISPLAY_SHOW_CUSTOM。
一旦你在酒吧里的自定义视图,然后使用正常的布局过程来得到你想要的效果。 你可以使用是一个技巧有3个嵌套的线性布局和分配给每个的权重。 例如1,4,1所以中心布局得到了大部分空间。 下面是一个例子,当然,你可以离开了右侧布局的按钮,如果你希望它是空白。 通过这种方法就可以实现精确的中心。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#F00"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="#0F0"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#00F"
android:gravity="right"
android:orientation="horizontal" >
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
</LinearLayout>