ViewBinding的使用节省了findViewById时间

118 阅读1分钟

需要在build.gradle中配置

viewBinding{
    enabled = true
}

如果某个布局不想生成binding类可在布局中设置

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@color/white"
    android:orientation="vertical"
    tools:viewBindingIgnore="true">

    <TextView
      />

</LinearLayout>

使用举例,假设布局activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@color/white"
    tools:ignore="MissingPrefix">

    <TextView
        android:id="@+id/main_http_tv"
        android:layout_width="match_parent"
        android:layout_height="50mm"
        android:layout_marginLeft="30mm"
        android:layout_marginRight="30mm"
        android:layout_marginTop="30mm"
        android:background="@color/gray_555"
        android:textColor="@color/white"
        android:text="获取网络接口"
        android:textSize="25mm"
        android:gravity="center"/>

</LinearLayout>

可以直接使用对象实例访问,代码如下

public class MainActivity extends BaseActivity {
    private ActivityMainBinding activityMainBinding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    protected void init(Bundle savedInstanceState) {
        super.init(savedInstanceState);
        activityMainBinding = ActivityMainBinding.inflate(LayoutInflater.from(this));
        setContentView(activityMainBinding.getRoot());
    }

    @Override
    protected void initView() {
        activityMainBinding.mainHttpTv.setText("赋值啦赋值啦");
    }
    
}