私はこれを達成したい:
私が思ったのは、より高い高さのカスタムツールバーを作成し、通常はタブホストとタブページャーで動作することでした。私はそれを実装しましたが、ツールバーは通常の高さを表示しているので、望みどおりに表示されず、上部のみが表示されます。これは正しいアプローチですか、または線形/相対レイアウトの下に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);
}
<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
は、その高さをその子の周りにラップしています。つまり、子が測定された場合にのみ、固定サイズを取得します。最小の高さは50
から60
dip
、つまりToolBar
がどれだけ低くなるか。そのため、子供の身長が妥当な大きな数にならない場合でも、<= 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>
アクションバーの機能が必要ない場合は、このアクティビティまたはアプリ全体にアクションバーのないテーマを使用します(Theme.Holo.NoActionBar
)。アクティビティのルートレイアウトにトップバーのレイアウトを直接追加できます。他のアクティビティで使用する場合は、レイアウトまたは独自のActionBarViewクラス用に個別のxmlファイルを作成することを検討してください。