gpt4 book ai didi

android - 为什么使用 View Binding 会改变布局?

转载 作者:行者123 更新时间:2023-12-02 13:07:34 25 4
gpt4 key购买 nike

实际代码:

我的主要 Activity :

class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)

val rollButton = binding.rollButton
rollButton.setOnClickListener { rollDice() }

setContentView(binding.root)
}

private fun rollDice() {
val randomDiceRoll = Random.nextInt(6) + 1
Toast.makeText(this, randomDiceRoll.toString(), Toast.LENGTH_SHORT).show()
binding.resultText.text = randomDiceRoll.toString()
}

我的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
android:id="@+id/result_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/count"
android:textSize="30sp" />

<Button
android:id="@+id/roll_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/roll" />

</LinearLayout>

在 android studio 中预览:

Preview

设备中的实际布局:

actual layout

如果我改变 setContentView(binding.root)setContentView(R.layout.activity_main) ,Android Studio 和设备的布局变得一样了,当然,按钮不再起作用了……

为什么会这样?为什么是 ActivityMainBinding.inflate(layoutInflater)改变布局?如何解决这个问题?

谢谢

GitHub repo :
https://github.com/Wizard28082006/Dice_Roller

最佳答案

If I change setContentView(binding.root) to setContentView(R.layout.activity_main), the layout of Android Studio and the device become the same



很可能是由 container如果 View 像这样膨胀,则不会传递给充气器。

您可以尝试以下方法:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"


class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
binding = ActivityMainBinding.bind(findViewById(R.id.root))

val rollButton = binding.rollButton
rollButton.setOnClickListener { rollDice() }

关于android - 为什么使用 View Binding 会改变布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61695769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com