2015-07-18 14 views
17

Mam aplikację, która używa fitsSystemWindows, aby móc narysować tło za nawigacją i pasku stanu - niestety SnackBar wydaje się ignorować fitsSystemWindows = true z kontenera. I gotowane problemu w dół do tej minimalnej aplikacji:SnackBar i pasujeSystemWindow

problem

stylu:

<resources> 

    <style name="AppTheme" parent="Theme.AppCompat.Light"> 

     <item name="android:windowBackground">@color/accent_material_dark</item> 
     <item name="android:fitsSystemWindows">false</item> 

     <item name="android:windowTranslucentStatus">true</item> 
     <item name="android:windowTranslucentNavigation">true</item> 
    </style> 

</resources> 

układ:

<RelativeLayout 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:fitsSystemWindows="true" 
       tools:context=".MainActivity"> 

    <Button 

      android:id="@+id/button" 
      android:text="@string/hello_world" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 

</RelativeLayout> 

aktywności:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(final View v) { 
       Snackbar.make(v,"This Snackbar should fitSystemWindows",Snackbar.LENGTH_INDEFINITE).show(); 
      } 
     }); 
    } 

} 

Anyon e zna jakieś obejście?

wydałem minimalną aplikację, aby pokazać problem tutaj: https://github.com/ligi/SnackBarFitsSystemWindowProblem

Odpowiedz

13

Snackbar będą zawsze szukać CoordinatorLayout do zakotwiczenia się w: jeśli nie masz, to korzysta z pełnego widoku treści (co w Twoja sprawa, obejmuje obszar pod pasku stanu). - dodając do CoordinatorLayout który ma fitsSystemWindows=true powinno wystarczyć

+0

Czy ta kaskada spadłaby z Fragmentu? Mam fragment, w którym odradzam ten pasek Snackbar: –

+0

@NeonWarge - Masz na myśli kaskadę z Fragmentu, którego widok jest zawarty w 'CoordinatorLayout'? Tak. – ianhanniballake

+0

tak, jest w tym coś nieporządnego. Nie respektuje tego dla mnie:/Jest to ViewPager na aktywności z 4 fragmentami. –

-2

Dobrze prawidłowa odpowiedź to dodać android:paddingbottom="50dp" do CoordinatorLayout chociaż nie jestem pewien, czy wszyscy rozmiar bar nawigacyjnego to 50 dp

-1

Można również użyć następujący wiersz w dowolnym miejscu CoordinatorLayout w deklaracji Snackbar z findViewById (android.support.design.R.id.design_navigation_view).

Powiązane problemy