自定义ActionBar产生不同的布局视图

时间:2013-08-16 03:27:04

标签: android android-actionbar android-custom-view

我正在使用自定义操作栏创建应用程序。但是根据不同的屏幕分辨率,我得到了不同的观点我正在尝试修复它,但无法实现解决方案。

这是来自具有480 x 800分辨率(HDPI)的仿真器的布局:

enter image description here

另一方面,这是具有相同代码的720 x 1280(XHDPI)仿真器的输出:

enter image description here

如您所见,带有设置的图标显示在右上角。这是默认的吗?有什么方法可以删除它并显示我从HDPI布局得到的正确和预期的布局?

顺便说一下,这是自定义ActionBar的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <RelativeLayout
        android:id="@+id/top_line_1"
        android:layout_width="fill_parent"
        android:layout_height="1dip" >

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:background="#8284A3" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/top_line_2"
        android:layout_width="fill_parent"
        android:layout_height="1dip"
        android:layout_below="@+id/top_line_1" >

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:background="#6E7095" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/main_action_bar"
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:layout_below="@+id/top_line_2"
        android:background="@drawable/ab_solid_iformula"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingBottom="7dp"
        android:paddingTop="6dp" >

        <Button
            android:id="@+id/main_top_left_button"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:background="@drawable/rounded_nav_button"
            android:minWidth="50dp"
            android:paddingLeft="6dp"
            android:paddingRight="6dp"
            android:paddingBottom="6dp"
            android:paddingTop="3dp"
            android:text="@string/iformula_top_btn_add"
            android:textColor="#FFFFFF"
            android:textSize="12sp" />

        <Button
            android:id="@+id/main_top_right_button"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:background="@drawable/rounded_nav_button"
            android:minWidth="50dp"
            android:paddingLeft="6dp"
            android:paddingRight="6dp"
            android:paddingBottom="6dp"
            android:paddingTop="3dp"
            android:text="@string/iformula_top_btn_edit"
            android:textColor="#FFFFFF"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/main_top_navigation_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/main_top_right_button"
            android:layout_alignBottom="@+id/main_top_right_button"
            android:layout_centerHorizontal="true"
            android:text="@string/app_name"
            android:textColor="#FFFFFF"
            android:textSize="18sp"
            android:textStyle="bold" />

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/below_line"
        android:layout_width="fill_parent"
        android:layout_height="1dip"
        android:layout_below="@+id/main_action_bar" >

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:background="#00103D" />
    </RelativeLayout>

</RelativeLayout>

再次,如何使用“设置”删除图标?我需要与HDPI相同的输出。

2 个答案:

答案 0 :(得分:0)

这不是分辨率,而是您选择的设备类型。溢出图标仅出现在没有菜单硬件键的手机上。可以找到更多信息here

答案 1 :(得分:-1)

我解决了这个问题。事实证明我添加了一个菜单,在我的主应用程序中找到的技术上没用。片段:

public boolean onCreateOptionsMenu(Menu menu) {
    .....
    return true;
}

只需删除此行代码即可。