Android 15, от края до края, Координатор и вкладки -> Панель инструментов над строкой состоянияAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android 15, от края до края, Координатор и вкладки -> Панель инструментов над строкой состояния

Сообщение Anonymous »

В моем приложении у меня есть действие, показывающее координаторный макет с ViewPager2, отображающим 3 вкладки, каждая из которых имеет RecyclerView. При прокрутке вверх верхняя панель MaterialToolBar оказывается под (непрозрачной) строкой состояния, а заголовки вкладок перестают двигаться, когда их верхняя часть касается нижней части строки состояния.
Приложение обновлено для Android 16, и теперь AppBarLayout отображается над строкой состояния.
Вот пример кода:
Активность:

Код: Выделить всё

class MyAdapter(private val items: List) : RecyclerView.Adapter() {

class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val textView: TextView = view.findViewById(android.R.id.text1)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
// Using a simple built-in Android layout for the demo
val view = LayoutInflater.from(parent.context)
.inflate(android.R.layout.simple_list_item_1, parent, false)
return ViewHolder(view)
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.textView.text = items[position]
// Setting a minimum height to ensure the list is long enough to scroll
holder.itemView.minimumHeight = 200
}

override fun getItemCount() = items.size
}

class TabListFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
val recyclerView = inflater.inflate(R.layout.activity_test_fragment, container, false) as RecyclerView

// Setup Dummy Data
recyclerView.layoutManager = LinearLayoutManager(context)
recyclerView.adapter = MyAdapter((1..50).map { "Item $it" })

// 5.  Handle Bottom Insets for the List
// Ensures the last item in the list is fully visible above the nav bar
ViewCompat.setOnApplyWindowInsetsListener(recyclerView) { v, insets ->
val navBars = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
v.updatePadding(bottom = navBars.bottom + 100) // 100px extra for FAB clearance
insets
}

return recyclerView
}
}

class TestActivity : AppCompatActivity() {

private lateinit var ui: ActivityTestBinding

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

WindowCompat.setDecorFitsSystemWindows(window, false)
ui = ActivityTestBinding.inflate(layoutInflater)
setContentView(ui.root)

// Set action bar:
setSupportActionBar(ui.toolBar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)

// Setup ViewPager and Tabs
ui.viewPager.adapter = object : FragmentStateAdapter(this) {
override fun getItemCount(): Int = 3
override fun createFragment(position: Int) = TabListFragment()
}

TabLayoutMediator(ui.tabLayout, ui.viewPager) { tab, position ->
tab.text = "TAB ${position + 1}"
}.attach()
}
}
XML активности: XML вкладки: И вот результат при прокрутке:
Изображение

Как заставить LiftOnScroll работать, чтобы AppBarLayout переходил под строку состояния, как раньше?

Подробнее здесь: https://stackoverflow.com/questions/798 ... status-bar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»