我有一个activity_main.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:orientation="vertical"
android:layout_gravity="center"
tools:context=".MainActivity"
android:id="@+id/main_linear_layout">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:layout_gravity="center_horizontal"
android:textSize="30sp"
android:id="@+id/dice_text"/>
<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>
所以当我尝试创建一个视图绑定并在Activity文件中使用它时,class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val root = binding.root
setContentView(root.main_linear_layout)
buttonClicked()
}
fun buttonClicked(): Unit {
val roll_button = binding.mainLinearLayout.roll_button
val text = binding.mainLinearLayout.dice_text
roll_button.setOnClickListener {
var randomNumber = Random().nextInt(6)+1
text.text = randomNumber.toString()
}
}
}
我有一些问题。当然,由于线性布局的layout_gravity设置为居中,它应该在屏幕上居中,无论是垂直还是水平方向。这是在xml设计编辑器中的情况,它应该是这样的。
但当我运行这个应用时,在我的手机上,文本和按钮都是居中对齐,但不是垂直对齐。
我试着把中心_垂直也对齐,但没有用。
但如果我不使用视图绑定,而是使用findViewById,就能正常工作。
编辑:我已经从绑定中删除了mainLinearLayout。所以它只是
setContentView(root)
我不工作。这就是我想要的,这就是它在xml设计视图中的表现(我已经删除了文本,并添加了图像)。
但是,当我运行它时,我得到了这个。在这里输入图像描述
P.S我刚开始学习安卓系统的开发。
添加
android:gravity = "center"
成功了!!
试试这个:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val root = binding.root
setContentView(root)
buttonClicked()
}
源。https:/developer.android.comtopiclibrariesview-binding#activities