如何设置Android工具栏高度?
How to set Android toolbar height?
我想实现这个:
我的想法是制作一个具有更大高度的自定义工具栏,并正常使用 tabhost 和 tabpager。我已经实现了它,但是工具栏显示的是正常高度,所以它没有按照我的意愿显示,只显示了顶部。这是正确的方法还是可以在 Linear/Relative 布局下方设置 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>
而Activity中的这个函数:
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);
}
如果您不需要操作栏的功能(如 Theme.Holo.NoActionBar
),请为此 activity 或整个应用程序使用一些没有操作栏的主题。
您可以直接在活动根布局中添加顶部栏的布局。如果您将在其他活动中使用它,请考虑制作单独的 xml 布局文件,甚至是您自己的 ActionBarView class。
<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
这是一个 ViewGroup
将它的高度包裹在它的 children 周围意味着它只有在 children 被测量时才会得到一个固定的大小。您的最低身高在 50
到 60
dip
左右,这就是您的 ToolBar
的高度。
所以如果你的 children 身高加起来不是一个合理的大数字,它仍然是 <= 50
给它一个喜欢的高度android:layout_height="200dp"
你可以像这样使用 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>
我想实现这个:
我的想法是制作一个具有更大高度的自定义工具栏,并正常使用 tabhost 和 tabpager。我已经实现了它,但是工具栏显示的是正常高度,所以它没有按照我的意愿显示,只显示了顶部。这是正确的方法还是可以在 Linear/Relative 布局下方设置 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>
而Activity中的这个函数:
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);
}
如果您不需要操作栏的功能(如 Theme.Holo.NoActionBar
),请为此 activity 或整个应用程序使用一些没有操作栏的主题。
您可以直接在活动根布局中添加顶部栏的布局。如果您将在其他活动中使用它,请考虑制作单独的 xml 布局文件,甚至是您自己的 ActionBarView class。
<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
这是一个 ViewGroup
将它的高度包裹在它的 children 周围意味着它只有在 children 被测量时才会得到一个固定的大小。您的最低身高在 50
到 60
dip
左右,这就是您的 ToolBar
的高度。
所以如果你的 children 身高加起来不是一个合理的大数字,它仍然是 <= 50
给它一个喜欢的高度android:layout_height="200dp"
你可以像这样使用 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>