首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于视图绑定

关于视图绑定
EN

Stack Overflow用户
提问于 2021-02-23 15:49:30
回答 5查看 168关注 0票数 0

我想问一下关于ViewBinding的事。

这位官员

代码语言:javascript
复制
 buildFeatures{
        viewBinding = true
    }

但它不起作用。

下面是一个示例代码。

布局代码

代码语言:javascript
复制
    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/floatingActionButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="24dp"
        android:layout_marginBottom="24dp"
        android:clickable="true"
        android:focusable="true"
        android:tint="@color/white"
        android:src="@drawable/ic_add"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

Kotlin代码

代码语言:javascript
复制
val view = inflater.inflate(R.layout.fragment_list, container, false)

        view.floatingActionButton.setOnClickListener { }

这个问题有什么解决方案吗?我不知道为什么它不工作。

Android studio Vierson4.1.2 Gradle Viesion 6.5

EN

回答 5

Stack Overflow用户

发布于 2021-02-23 16:15:35

您需要在layout.xml中使用作为父对象

示例:- my_layout.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:padding="@dimen/_4sdp">

    <TextView
        android:id="@+id/scanner"
        android:layout_width="@dimen/_200sdp"
        android:layout_height="@dimen/_200sdp"
        android:layout_centerInParent="true"
        app:squaredFinder="true" />
</RelativeLayout>

</layout>

在科特林。

代码语言:javascript
复制
val binding = DataBindingUtil.inflate(android.view.LayoutInflater.from(context), R.layout.my_layout, null, false);
票数 0
EN

Stack Overflow用户

发布于 2021-02-23 16:36:19

这就是启用视图绑定的方式

代码语言:javascript
复制
 private var _binding: FragmentListBinding? = 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 = FragmentListBinding.inflate(inflater, container, false)
    
    binding.floatingActionButton.setOnClickListener { }
    return binding.root

碎片的寿命超过了它们的视图。确保在片段的onDestroyView()方法中清除对绑定类实例的任何引用。

代码语言:javascript
复制
override fun onDestroyView() {
        super.onDestroyView()

        _binding = null
    }

有关更多详细信息,请访问read

票数 0
EN

Stack Overflow用户

发布于 2021-02-23 16:39:04

试着这样做。

代码语言:javascript
复制
class BaseActivity : AppCompatActivity(){

private lateinit var binding: (YourActivityBinding)

super.onCreate(savedInstanceState){
 binding = YourActivityBinding.inflate(layoutInflater)
 setContentView(binding.root)
 binding.floatingActionButton.setOnClickListener (View.OnClickListener{ 
      })
   }
 }  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66329041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档