java - 可以使用/布局用 Java 编写的 compose View 和 Activity 吗?

标签 java android kotlin android-jetpack-compose

Google 提供了以下示例,说明如何在 XML 中使用 ComposeView 并将其膨胀到 fragment 中。

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        // Inflate the layout for this fragment
        return inflater.inflate(
            R.layout.fragment_example, container, false
        ).apply {
            findViewById<ComposeView>(R.id.compose_view).setContent {
                // In Compose world
                MaterialTheme {
                    Text("Hello Compose!")
                }
            }
        }
    }
}
我有一个用 java 编写的 Activity ,而不是 kotlin。是否可以从 Java Activity 中使用 setContent?如果是这样,我正在为语法而苦苦挣扎。

最佳答案

是的,这是可能的。
首先你应该创建一个 AbstractComposeView 的子类。 :

class MyComposeView
@JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
    AbstractComposeView(context, attrs) {
    @Composable
    override fun Content() {
        YourComposableFunction()
    }
}
然后将此 View 设置为 Activity 内容...
public class MyJavaActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MyComposeView(this));
    }
}
您还可以在任何布局文件中声明您的 View ...
<com.example.MyComposeView
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
并调用setContentView(R.layout.your_layout_file)照常。

关于java - 可以使用/布局用 Java 编写的 compose View 和 Activity 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67423907/

相关文章:

android - 如何在 Kotlin 中使方法参数可变?

java - RemoteWebDriver - 调试 headless Docker 容器

java - 编写一个迭代 Map 的方法,查找包含值的对象条目,将此对象添加到新集合中,然后返回该集合

JavaFX:如何在 TreeView 中添加复选框和按钮?

android - 另一个 LazyColum 中带有 LazyColum 的 Horizo​​ntalPager - Jetpack Compose

Spring Reactive MongoDB不保存文档

java - 如何在不强制执行的情况下终止 Java 中的进程?

java - 解决坏位图上的 URI 失败错误

java - 使用scrollFlags时自定义工具栏不隐藏

java - 一项 Activity 中是否可以有多个 GoogleApiClient?