Je veux réaliser ceci:
Ce que je pensais était de créer une barre d’outils personnalisée avec une hauteur plus grande et de travailler normalement avec tabhost et tabpager. Je l'ai implémenté, mais la barre d'outils affiche la hauteur normale. Elle ne s'affiche donc pas comme je le souhaite, mais uniquement la partie supérieure. Est-ce la bonne approche ou est-il possible de définir un TabHost en dessous d'une disposition linéaire/relative? Parce que je n'ai pas besoin de travailler avec comme une barre d'action.
Code pertinent
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>
Et cette fonction dans l'activité:
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
votre ToolBar
qui est un ViewGroup
enveloppe sa taille autour de ses enfants, ce qui signifie qu'il aura une taille fixe uniquement si les enfants sont mesurés. votre hauteur minimale est d'environ 50
à 60
dip
, le niveau de votre ToolBar
étant alors bas . si la hauteur de vos enfants ne correspond pas à un grand nombre raisonnable, elle sera toujours <= 50
donnez-lui une hauteur préférée Android:layout_height="200dp"
vous pouvez utiliser AppBarLayout comme ceci:
<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>
Utilisez un thème sans barre d'action pour cette activité ou l'application dans son ensemble si vous n'avez pas besoin des fonctionnalités de la barre d'action (telles que Theme.Holo.NoActionBar
) . Vous pouvez ajouter la présentation de votre barre supérieure directement dans la disposition racine des activités. Si vous comptez l'utiliser dans d'autres activités, envisagez de créer des fichiers XML séparés pour la mise en page ou même votre propre classe ActionBarView.