标签: viewbinding

Android 使用视图绑定,但没有“绑定”。全局类内的关键字

启用视图绑定后,使用:

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}
Run Code Online (Sandbox Code Playgroud)

我们可以使用ViewBinding,问题是我们需要binding.在访问每个视图之前使用前缀。有没有一种方法可以省略这个前缀,并直接访问类中的视图?

所以而不是:

binding.textview1.text = viewModel.name
binding.button1.setOnClickListener { viewModel.userClicked() }
Run Code Online (Sandbox Code Playgroud)

直接使用:

textview1.text = viewModel.name
button1.setOnClickListener { viewModel.userClicked() }
Run Code Online (Sandbox Code Playgroud)

显然我们可以使用with(binding)和使用每个方法,但是有没有办法在全局范围内将其应用于整个类?

fun method = with(binding){
    // now we can access the viewbinding
    textview1.text = viewModel.name
    button1.setOnClickListener { viewModel.userClicked() }
}

Run Code Online (Sandbox Code Playgroud)

是否有任何绑定设置,我们可以指定编译器从布局生成接口:

所以它会自动生成:


public interface Fragment1BindingInterface {

  @NonNull
  TextView getTextView1();
}

public final class Fragment1Binding implements ViewBinding, Fragment1BindingInterface {
  @NonNull
  private final RelativeLayout rootView;

  @Override
  @NonNull
  private final TextView …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-viewbinding viewbinding

5
推荐指数
1
解决办法
68
查看次数