[我正在学习Udacity的“使用Kotlin开发Android应用程序”初学者课程,偶然发现了一些奇怪的东西。
我的MainActivity文件中具有以下onCreate函数:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
}
布局看起来像这样:
这里我使用整数值引用我的视图。当我更改为使用(据我所了解的更现代)视图绑定时,布局不再居中。现在的代码如下所示:
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
}
布局看起来像这样:
相应的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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textSize="30sp"
android:text="1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/roll" />
</LinearLayout>
我曾尝试向Google询问为什么会这样,但找不到任何东西。如果有人可以帮助我,我将非常感激。
您是否可以像下面那样更改代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
}