ViewBinding使用详解

ViewBinding使用详解

  • 使用ViewBinding时需要先在build.gradle文件中声明

        //老版本
        viewBinding {
            enabled = true
        }
        //新版本
        buildFeatures {
            viewBinding = true
        }
    
  • 生成绑定类时忽略某个布局文件,请将 tools:viewBindingIgnore="true" 属性添加到相应布局文件的根视图中:

    <LinearLayout
                  ...
                  tools:viewBindingIgnore="true" >
        ...
    </LinearLayout>
    
  • 使用

    假设activity_main.xml为布局文件,所生成的绑定类的名称就为 ActivityMainBinding

        private 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 布局文件中声明动态界面内容。

  • 视图绑定不支持双向数据绑定

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值