1.添加依賴(安裝插件 zelezny)
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
2.綁定ButterKnife
一.在Activity 類中綁定 :
在onCreate()方法中進(jìn)行綁定 ButterKnife.bind(this);
必須在setContentView();之后綁定然评;且父類bind綁定后,子類不需要再bind
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//綁定初始化ButterKnife
ButterKnife.bind(this);
}
}
二.在Fragment中綁定
在onCreateView中綁定 ButterKnife.bind(this,view); 這里的this不能替換成getActivity
在onDestroyView()中解綁
public class ButterknifeFragment extends Fragment{
private Unbinder unbinder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
//返回一個Unbinder值(進(jìn)行解綁),注意這里的this不能使用getActivity()
unbinder = ButterKnife.bind(this, view);
return view;
}
/**
* onDestroyView中進(jìn)行解綁操作
*/
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
使用FindById
```
View view = LayoutInflater.from(context).inflate(R.layout.thing, null);
TextView firstName = ButterKnife.findById(view, R.id.first_name);
```
注解
@BindView()—->id
@BindViews()—->多個id
@BindString() 綁定string字符串
@BindBitmap( ) 綁定Bitmap資源
@BindColor( ) 綁定顏色值
@OnClick—->點(diǎn)擊事件
@OnLongClick( ) 長按事件
@OnCheckedChanged —->選中儒鹿,取消選中
@OnEditorAction —->軟鍵盤的功能鍵
@OnFocusChange —->焦點(diǎn)改變
@OnItemClick item—->被點(diǎn)擊(注意這里有坑凡辱,如果item里面有Button等這些有點(diǎn)擊的控件事件的拧簸,需要設(shè)置這些控件屬性focusable為false)
@OnItemLongClick item—->長按(返回真可以攔截onItemClick)
@OnItemSelected —->item被選擇事件
@OnLongClick —->長按事件
@OnPageChange —->頁面改變事件
@OnTextChanged —->EditText里面的文本變化事件
@OnTouch —->觸摸事件
@Optional —->選擇性注入寺旺,如果當(dāng)前對象不存在组去,就會拋出一個異常鞍陨,為了壓制這個異常,可以在變量或者方法上加入一下注解,讓注入變成選擇性的,如果目標(biāo)View存在,則注入, 不存在,則什么事情都不做