如何设置Android工具栏高度?

时间:2015-06-26 22:02:41

标签: android android-actionbar android-tabhost android-toolbar

我想实现这个目标:

我的想法是制作一个更高的自定义工具栏,并正常使用tabhost和tabpager。我已经实现了它,但是工具栏显示的是正常高度,所以它没有显示我想要的,只是顶部。这是正确的方法还是可以将TabHost设置为线性/相对布局?因为我不需要将它作为动作栏使用它。

相关代码

toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbarTitle"
    android:orientation="vertical"
    android:background="@color/black"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/AppTheme"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/img_logo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="55dp"
        android:scaleType="centerInside"
        android:src="@drawable/logo_home"
        />

    <TextView
        android:id="@+id/txt_version"
        android:text="@string/app_version"
        android:textColor="@color/white"
        android:layout_below="@+id/img_logo"
        android:paddingBottom="10dp"
        android:paddingTop="15dp"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    </RelativeLayout>
</android.support.v7.widget.Toolbar>

活动中的这个功能:

private void setupActionBar()
    {
        ActionBar ab = getSupportActionBar();
        ab.setDisplayShowCustomEnabled(true);
        ab.setDisplayShowTitleEnabled(false);
        LayoutInflater inflator = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflator.inflate(R.layout.toolbar_title, null);
        ab.setCustomView(v);
    }

3 个答案:

答案 0 :(得分:16)

aggregate

你的<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbarTitle" android:orientation="vertical" android:background="@color/black" android:layout_width="match_parent" android:fitsSystemWindows="true" android:minHeight="?attr/actionBarSize" //pay attention here android:theme="@style/AppTheme" android:layout_height="wrap_content"> //pay attention here ToolBar围绕其子女的高度,这意味着只有在测量孩子时才能获得固定的大小。您的最低身高在ViewGroup50 60左右,这就是dip的最低值。 因此,如果您的孩子身高不合理,那么它仍然是ToolBar

给它一个首选高度<= 50

答案 1 :(得分:0)

如果您不需要操作栏的功能(如Theme.Holo.NoActionBar),请为此活动使用一些没有操作栏的主题或整个应用。 您可以直接在活动根布局中添加顶栏的布局。如果您将在其他活动中使用它,那么考虑为布局或甚至您自己的ActionBarView类创建单独的xml文件。

答案 2 :(得分:0)

您可以像这样使用AppBarLayout:


<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme">

        <android.support.v7.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/toolbar_"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay">

        </android.support.v7.widget.Toolbar>

        <android.support.design.widget.TabLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tabs"
            app:tabBackground="@color/White"
            app:tabIndicatorColor="@color/OrangeFFC200"
            app:tabTextAppearance="@style/MineCustomTabText">

        </android.support.design.widget.TabLayout>

</android.support.design.widget.AppBarLayout>