2015-07-18 4 views
17

У меня есть приложение, которое использует fitsSystemWindows, чтобы иметь возможность рисовать фон позади панели навигации и состояния. К сожалению, SnackBar, похоже, игнорирует fitsSystemWindows = true из контейнера. Я вареная проблему до этого минимального приложения:SnackBar и fitsSystemWindow

problem

стиль:

<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> 

Формуляр:

<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> 

деятельность:

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(); 
      } 
     }); 
    } 

} 

эниона e знает какое-то обходное решение?

я опубликовал минимальное приложение, чтобы показать проблему здесь: https://github.com/ligi/SnackBarFitsSystemWindowProblem

ответ

13

Snackbar всегда будет искать CoordinatorLayout, чтобы закрепить себя в: когда у вас нет, то он использует весь контент вид (который в ваш случай, включает в себя область под строкой состояния) -. добавив CoordinatorLayout, который имеет fitsSystemWindows=true должен сделать это

+0

Будет ли это каскад вниз от Фрагмента? У меня есть фрагмент, где я создаю этот Snackbar, но –

+0

@NeonWarge. Вы имеете в виду каскад из фрагмента, чей вид содержится в 'CoordinatorLayout'? Ага. – ianhanniballake

+0

Да, на самом деле, есть что-то испортить его. Он не учитывает этот атрибут для меня:/The ViewPager для активности с 4 фрагментами. –

-2

Ну правильный ответ добавить android:paddingbottom="50dp" к вашему CoordinatorLayout хотя я не уверен, если все размер навигационного бара составляет 50 dp

-1

Вы также можете использовать следующую строку вместо любого CoordinatorLayout в закусочной декларации с findViewById (android.support.design.R.id.design_navigation_view).

 Смежные вопросы

  • Нет связанных вопросов^_^