我不了解inflate方法的第三个参数true或false的主要区别,没有任何有用的示例。
假设我们有一个非常简单的布局:
view_red_square.xml
<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="200dp"
android:layout_height="200dp"
android:background="#FA8072" />
我们主要活动使用的布局是:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</FrameLayout>
现在,让我们尝试增加view_red_square.xml
布局MainActivity
并了解发生了什么。
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val container = findViewById<FrameLayout>(R.id.container)
val inflatedView = layoutInflater.inflate(R.layout.view_red_square, container, false)
Toast.makeText(this, "Is the view inflated: $inflatedView", Toast.LENGTH_SHORT).show()
}
}
LayoutInflater.inflate
作为文档指向,第三个boolean参数代表:
attachToRoot:是否应将扩展的层次结构附加到root参数?如果为false,则root仅用于为XML中的根视图创建LayoutParams的正确子类。
因此,回到我们的主要活动。该false
布尔值指示充气视图不应被加入到root
,在同时指定充气法。
将以上代码用于MainActivity
。我们可以使用布局检查器来验证在将视图attachToRoot
设置为时,是否将视图未添加到容器中false
。
将视图添加到容器的解决方案是使用手动将视图添加到视图组container.addView(inflatedView)
。
现在,让我们看看将attachToRoot
布尔值切换为时会发生什么true
。让我们再次使用布局检查器。
val inflatedView = layoutInflater.inflate(R.layout.view_red_square, container, true)
如您所见,视图现已添加到root
我们的容器。因此,我们可以得出结论,attachToRoot
如果膨胀视图的值为,则将膨胀视图添加到给定的根true
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句