https://issuetracker.google.com/issues/422861653
Но я решил получить здесь хорошие отзывы. Проблема заключается в том, что он выглядит как смешивание AndroidFragment с помощью циркулярного программного индикатора запускает ошибку. Если у вас есть CircularProgressIndicator в одном из AndroidFragment , и у вас есть столбец AndroidFragment достаточно длинный, чтобы прокрутить, как только вы прокрутите клики на любую другую композицию, остановит.
Код: Выделить всё
package com.test.circularprogress
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.Button
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.ContentProviderCompat.requireContext
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.compose.AndroidFragment
import com.test.circularprogress.ui.theme.MyApplicationTheme
import kotlin.jvm.java
class FragmentA: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setContent {
FragmentAScreen(onClick = ::clickedSomething)
}
}
}
private fun clickedSomething() {
Toast.makeText(requireContext(), "Clicked Something", Toast.LENGTH_SHORT).show()
}
@Composable
private fun FragmentAScreen(
onClick: (() -> Unit) = {}
) {
Column() {
Text(text = "FragmentA")
Button(onClick = onClick ) {
Text(text = "Click ME! ")
}
}
}
}
class FragmentB: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setContent {
Column(modifier = Modifier.background(Color.Red)) {
Text(text = "FragmentB ")
CircularProgressIndicator(modifier = Modifier.size(40.dp))
}
}
}
}
}
class FragmentC: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_c, container, false)
}
}
class FragmentD: Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return ComposeView(requireContext()).apply {
setContent {
Column(modifier = Modifier.height(700.dp).background(Color.Blue)) {
Text(text = "FragmentD")
}
}
}
}
}
class MainActivity : FragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
MyActivityScreen()
}
}
}
@Composable
@Preview
private fun MyActivityScreen() {
MyApplicationTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Column(
modifier = Modifier
.padding(innerPadding)
.verticalScroll(rememberScrollState())
) {
AndroidFragment(clazz = FragmentA::class.java)
AndroidFragment(clazz = FragmentB::class.java)
AndroidFragment(clazz = FragmentD::class.java)
AndroidFragment(clazz = FragmentC::class.java)
AndroidFragment(clazz = FragmentD::class.java)
}
}
}
}
- Использовать сторонние спиннеры
- Реализовать пользовательский прядильщик, который использует запуск для анимирования вместо любого запоминания
Подробнее здесь: https://stackoverflow.com/questions/796 ... agment-bug