Я хотел бы иметь простые облегченные вкладки - никаких фрагментов, поскольку вкладки не имеют отдельной функциональности жизненного цикла и уже могут быть повторно использованы в качестве ViewGroups. Смахивание не требуется, и я не хочу ViewPager, если я абсолютно не должен.
У меня есть пример работы с ViewPager и мои простые представления, преобразованные во фрагменты, но это вынуждает меня изменить тип моего базового класса Activity и рисует в нескольких вспомогательных библиотеках, удваивая размер моего приложения, которое должно было быть очень маленький.
В основном что-то вроде этого примера , но с фактическими, определенными в формате XML макетами, отображаемыми на вкладках, а не всплывающее сообщение при нажатии на заголовки вкладок.
Вот что я попробовал:
public class LightweightTabs extends Activity {
@Override
protected void onCreate(Bundle bundy) {
super.onCreate(bundy);
setContentView(R.layout.main);
LayoutInflater linflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TabLayout tabs = findViewById(R.id.tabs);
tabs.addView(new WiFiOptions().view(linflater, this, null));
tabs.addView(new BluetoothOptions().view(linflater, this, null));
tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
tab.select();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {}
@Override
public void onTabReselected(TabLayout.Tab tab) {}
});
}
...
}
Представления для классов вкладок выглядят так:
public class WiFiOptions {
public View view(LayoutInflater linflater, final Context con, ViewGroup parentView) {
final View view = linflater.inflate(R.layout.wifi, parentView);
...
return view;
}
}
Как отмечено в комментариях на этой странице, это не работает, потому что
вы можете добавить экземпляр TabItem только через addView
& Ndash; так же, как addTab.
Нужно ли мне писать собственный PagerAdapter для этого?
(Кроме того, я не понимаю, почему он не настроен, поэтому мы могли бы просто указать макет в xml для каждого TabItem в TabLayout и легко сделать все это в xml ..)