2016-08-05 35 views
5

Ich habe herausgefunden, dass wenn das übergeordnete Layout enthält android:fitsSystemWindows="true", wird es stören meine BottomSheets Positionierung, wenn eine Sicht-Aktion passiert.Android: fitsSystemWindows und Newline stören BottomSheets

Speziell die eine, die ich begegne: wo eine Newline in einer Textansicht die Bottomsheets ausgelöst wird, um durch die Höhe des Systems/Notifier-Bar zu versetzen.

newline + fitsSystemWindows = schubst mein bottomsheet unten

ich alle irrelevanten Sachen bis auf Tasten eliminiert, Textview und der bottomsheet.

  • Button2: setText("1\n2") ist, wo die Magie

geschieht Sobald ichandroid:fitsSystemWindows="true" entfernen , es ist alles in Ordnung, nicht mehr seltsame Verhalten, aber ich verliere den Effekt wie fitsSystemWindows Farben im System/Hinweis-Bar.

Ich habe auch versucht, mein bottomSheet Layout eigene android:fitsSystemWindows="false" zu geben, aber es hatte keine Wirkung.

Wie kann ich fitsSystemWindows = true ohne dieses seltsame Offset-Verhalten auf meinen BottomSheets erreichen?

Überzeugen Sie sich selbst! enter image description here

public class Test extends AppCompatActivity { 
    private BottomSheetBehavior bottomSheetBehavior; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.act_test); 

     LinearLayout bottomSheet = (LinearLayout) findViewById(R.id.root_btmsheet); 
     bottomSheetBehavior = BottomSheetBehavior.from(bottomSheet); 
     bottomSheet.post(new Runnable() { 
      @Override 
      public void run() { 
       bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 
      } 
     }); 

     ((Button) findViewById(R.id.btn1)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       ((TextView) findViewById(R.id.info1)).setText("1"); 
      } 
     }); 
     ((Button) findViewById(R.id.btn2)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       // the culprit, Mr. Newline 
       ((TextView) findViewById(R.id.info1)).setText("1\n2"); 
      } 
     }); 
    } 
} 

act_test.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    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:fitsSystemWindows="true" <-- the other culprit, Ms. Fits 
    tools:context=".Test"> 

    <!--<include layout="@layout/act_test_content" />--> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:orientation="vertical" 
     android:id="@+id/root_content"> 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 
      <Button 
       android:id="@+id/btn1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="1" /> 
      <Button 
       android:id="@+id/btn2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="2" /> 
     </LinearLayout> 

     <TextView 
      android:id="@+id/info1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#e0e0e0" /> 

    </LinearLayout> 

    <!--<include layout="@layout/act_test_btmsheet" />--> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="200dp" 
     app:layout_behavior="@string/bottom_sheet_behavior" 
     android:orientation="vertical" 
     app:behavior_hideable="false" 
     app:behavior_peekHeight="50dp" 
     android:background="#5533b5e5" 
     android:id="@+id/root_btmsheet"> 

    </LinearLayout> 

</android.support.design.widget.CoordinatorLayout> 
+0

Revisited dies mit den neuesten Support-Bibliotheken 25.x.x, Problem scheint jetzt weg zu sein. – TWL

+0

hat das Problem bei 23.3.0 https://developer.android.com/topic/libraries/support-library/revisions.html Links zu https://code.google.com/p/android/issues/detail gefunden ? id = 203057 – TWL

Antwort

0

Auch ich hatte ein ähnliches Problem auch mit Support-Bibliothek 25.1.0. Aber ich habe später herausgefunden, dass es daran liegen könnte, kein CollapsingToolbarLayout zu verwenden. Ich habe es eingefügt und bang! .. es verhält sich normal, auch nachdem Layoutänderungen aufgrund von Zeilenumbrüchen