2016-12-22 12 views
2

2つの内部LinearLayoutsを持つLinearLayoutを持っています。このレイアウトファイルにツールバーを追加すると、レイアウト全体が常に重なってしまいます。ツールバーのみが表示されます。他のレイアウトファイルでは問題なく動作しました。ツールバーはLinearLayoutと重複します

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      xmlns:app="http://schemas.android.com/apk/res-auto" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" 
      tools:context="de.dk.mafi.ActMain"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:background="?attr/colorPrimary" 
    android:fitsSystemWindows="true" 
    android:minHeight="?attr/actionBarSize" 
    android:padding="2dp" 
    app:titleMarginStart="20dp" 
    app:titleTextAppearance="@style/MyMaterialTheme.Base.TitleTextStyle" 
    app:titleTextColor="@color/textColorPrimary"> 

    <TextView 
     android:id="@+id/toolbar_title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="TEST" 
     android:textColor="@android:color/white" 
     android:textStyle="bold|italic"/> 

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

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_margin="20dp" 
    android:layout_weight="1" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@drawable/border" 
     android:padding="10dp" 
     android:text="@string/welcome"/> 

    <Button android:id="@+id/button2" android:layout_width="match_parent" 
      android:layout_height="wrap_content" android:text="Favoriten"/> 


</LinearLayout> 

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_margin="20dp" 
    android:layout_weight="1" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:src="@drawable/training"/> 

    <Button android:id="@+id/button" android:layout_width="match_parent" 
      android:layout_height="wrap_content" android:text="Hauptmenü"/> 

</LinearLayout> 

ここでの問題は何ですか?

+0

あなたがアンドロイドを追加してみてくださいすることができます。 https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec#.q6n66hugs –

答えて

1

最初のLinearLayoutの向きが間違っています。 horizontalの代わりにverticalに設定する必要があります。これにより、幅の画面の右側にあるToolbarの後ろに、他の子(内部はLinearLayout)が描画されます。その後

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     ... 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:fitsSystemWindows="true"> 

Toolbarからandroid:fitsSystemWindows="true"を削除:に変更します。

編集:私はちょうどこれをしなかった

予想通り、それは動作します:

私は他の活動でこのツールバーのレイアウト再利用しています
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:fitsSystemWindows="true" 
    tools:context="..."> 

    <include layout="@layout/include_toolbar" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@color/blue"/> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@color/red"/> 
</LinearLayout> 

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary"/> 

出力を:

Screenshot of Toolbar above two LinearLayouts

私のテストでは、インナー子供以上/以下が含まれますが、簡単のようにしてください、ジュスト子供の親コンテナを追加し、あなたの要件を維持するために:fitsSystemWindows =「true」を:

<LinearLayout ...> 

    <include layout="@layout/include_toolbar" /> 

    <!-- use a parent container with horizontal orientation --> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" .../> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" .../> 
    </LinearLayout> 
</LinearLayout> 
+0

私はすでに試しましたが、同じ結果を示しています(Androidのプレビューでスタジオ)。 –

+0

@DenoAgüero予想通りに動作するようです(自分の編集を参照)。たぶん、2つの線形レイアウトの内側の子をチェックする必要があります。パフォーマンスを向上させるには、ネストされたウェイトを使用しないでください。 – Fllo

+0

ありがとうございます。しかし今、私のレイアウトは、お互いの間にあり、横並びではありません。 –

関連する問題