我正试图将图标置于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>
我在使用和不包含ImageView的RelativeLayout时尝试了这个。左侧按钮显示正常,我可以使用layout_toRightOf设置图标,但我无法将其设置为居中。有人有什么想法吗?
编辑: 这是on create方法中的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);
答案 0 :(得分:8)
好。这应该工作。试试这个(在正常活动中测试):
<?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>
答案 1 :(得分:6)
之前的答案对我来说并不适用(在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);
答案 2 :(得分:1)
您可以向操作栏添加自定义视图。只需添加一个LinearLayout作为自定义视图,并将子视图添加到linearlayout。我用这种技术在中间添加了4个按钮。
要添加自定义视图,请使用actionBar.setCustomView(view)。还可以使用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>