Я хочу использовать snackbar
для отображения сообщения в любой части приложения. Я имею в виду, когда Wi-Fi отключен, должна быть закуска, говорящая о отключении Wi-Fi. Это определяется в любой части приложения (любой фрагмент или любое действие). В настоящее время я определяю это в subfragment
, где все фрагменты распространяются subfragment
, а также я использую его в MainActivity
. Это прекрасно работает. Проблема заключается в размещении координатора для snackbar
. Как я могу дать это coordinator layout
в каждом xml? Какое наилучшее возможное решение?Координатор для xml
ответ
я думаю, что распространенным способом является обходом вид корня и найти ребенка, который является экземпляром CoordinatorLayout, сегмент кода может быть как дуновение:
public View getCoordinateLayout(Activity activity) {
ViewGroup vg = (ViewGroup) activity.findViewById(android.R.id.content);
ViewGroup root = (ViewGroup) vg.getChildAt(0);
int childCount = root.getChildCount();
for(int i=0;i<childCount;i++){
View view = root.getChildAt(i);
if(view instanceof CoordinatorLayout){
return view;
}
}
return null;
}
Кажется, что вы хотите использовать родительскую структуру макета для всех ваших других макетов. Скажем, наш родительский компоновщик файл называется structure.xml
, и это выглядит примерно так:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>
Затем, когда вы создаете активности вы можете надуть свой обычный макет, скажем activity_main.xml
, как это:
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.structure);
LayoutInflater.from(this).inflate(R.layout.activity_main, (FrameLayout) findViewById(R.id.container), false);
}
И всякий раз, когда вы создаете фрагмент с вашей обычной компоновкой, скажу frag_main.xml
, вы можете сделать это следующим образом:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) {
View view = inflater.inflate(R.layout.structure, group, false);
inflater.inflate(R.layout.frag_main, (FrameLayout) view.findViewById(R.id.container), false);
return view;
}
Так как вы ALR eady получил родительский класс для ваших фрагментов/действий, вы должны легко создать некоторые вспомогательные методы для всех ваших подклассов.
Надеюсь, это поможет.
- 1. oozie Координатор для исторических дат
- 2. SearchView внутри координатор макета
- 3. координатор Компоновка с RecyclerView
- 4. WCF «глобальный координатор»
- 5. Координатор Layout Overlapping Bottom Buttons
- 6. Координатор координат Google Maps
- 7. Координатор распределенной транзакции
- 8. Координатор NiFi - Обработка данных
- 9. 360 видеопроигрыватель мировой координатор
- 10. viewWillTransitionToSize координатор игнорирует блок
- 11. Координатор Behavior ImageView
- 12. Повторяющийся координатор для улья с использованием oozie
- 13. Координатор транзакций для распределенных транзакций wcf
- 14. Oozie конфигурации Координатор для нескольких зависимостей файла
- 15. ViewPager не прокрутка координатор макете
- 16. Распределенный координатор по окнам azure
- 17. координатор местоположения, дающий нулевые координаты
- 18. Координатор Oozie, имеющий несколько рабочих процессов
- 19. Координатор AndroidLayout скрывает/перекрывает основной вид
- 20. BringToFront не работает внутри макета координатор
- 21. Google maps и координатор макета
- 22. Footer показ в макете координатор
- 23. Координатор группы не доступен, Кафка
- 24. Координатор на основе файлов Oozie
- 25. координатор макет с ViewPager, прокрутка не работает
- 26. BringToFront заказного вид внутри макета координатор
- 27. координатор Компоновка и относительная Компоновка вопрос
- 28. Координатор Содержимое макета отображается за строкой состояния
- 29. координатор Компоновка прокрутки флаги внутри контейнера
- 30. координатор раскладка и прозрачный статус бар
, где я должен добавить этот код? – MagdHo0506
добавьте его в BaseActivity и BaseFragment, также вы можете сделать его статическим методом и вызвать его там, где вы хотите показать снэк-бар, передавая ему текущую активность @ MagdHo0506 –