ViewBinding使用详解
-
使用ViewBinding时需要先在build.gradle文件中声明
//老版本 viewBinding { enabled = true } //新版本 buildFeatures { viewBinding = true } -
生成绑定类时忽略某个布局文件,请将
tools:viewBindingIgnore="true"属性添加到相应布局文件的根视图中:<LinearLayout ... tools:viewBindingIgnore="true" > ... </LinearLayout> -
使用
假设activity_main.xml为布局文件,所生成的绑定类的名称就为
ActivityMainBindingprivate lateinit var binding: ResultProfileBinding override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) binding = ResultProfileBinding.inflate(layoutInflater) val view = binding.root setContentView(view) binding.name.text = viewModel.name binding.button.setOnClickListener { } } -
在Fragment中的视图绑定
kotlin
private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _binding = ResultProfileBinding.inflate(inflater, container, false) val view = binding.root return view } override fun onDestroyView() { super.onDestroyView() _binding = null }java
private ResultProfileBinding binding; @Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { binding = ResultProfileBinding.inflate(inflater, container, false); View view = binding.getRoot(); return view; } @Override public void onDestroyView() { super.onDestroyView(); binding = null; } -
视图绑定不支持布局变量或布局表达式,因此不能用于直接在 XML 布局文件中声明动态界面内容。
-
视图绑定不支持双向数据绑定。
本文详细介绍了如何在Android项目中使用ViewBinding进行视图操作,包括配置、布局文件忽略、生成绑定类实例以及注意事项。重点讲解了在Activity和Fragment中的应用实例,并提到了ViewBinding不支持的特性如动态界面和双向数据绑定。
1963

被折叠的 条评论
为什么被折叠?



