引用:github上的使用方法
Project的build.gradle文件中增加classpath内容: apply plugin: 'com.android.application' apply plugin: 'android-apt'//增加这一句 android { compileSdkVersion 24 buildToolsVersion "24.0.1" defaultConfig { applicationId "demo.helloworld" minSdkVersion 19 targetSdkVersion 24 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.1.1' compile 'com.jakewharton:butterknife:8.2.1' apt 'com.jakewharton:butterknife-compiler:8.2.1'//增加这一句 } app的build.gradle文件中增加classpath内容: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'//增加这一句 } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } Activity中的使用(需要注意的是View变量声明的时候不能为private或者static) public class MainActivity extends AppCompatActivity { @BindView(R.id.btn) Button mBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } } Fragment中的使用 public class SimpleFragment extends Fragment { @InjectView(R.id.fragment_text_view) TextView mTextView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_simple, container, false); ButterKnife.inject(this, view); mTextView.setText("TextView in Fragment are found!"); return view; } } Adaper ViewHolder中的使用 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.person_item_layout, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Person person = getItem(position); if (null != person) { holder.name.setText(person.getName()); holder.age.setText(String.valueOf(person.getAge())); } return convertView; } static class ViewHolder { @InjectView(R.id.person_name) TextView name; @InjectView(R.id.person_age) TextView age; public ViewHolder(View view) { ButterKnife.inject(this, view); } } 点击事件 @OnClick(R.id.basic_finish_button) void finishA(View view) { finish(); }除了点击事件@OnClick,还有ListView的点击@OnItemClick, CheckBox的@OnCheckedChanged等等. 可以一次指定多个id,为多个View绑定一个事件处理方法
@OnClick({R.id.button_enable, R.id.button_disable, R.id.button_alpha_0, R.id.button_alpha_1}) void editViewsClicked() { Toast.makeText(this, "You click the Button!", Toast.LENGTH_SHORT).show(); } Android ButterKnife Zelezny插件的使用 打开Plugins界面 按照上图中1,2,3指示操作(注意:这里我的Android Studio中已经安装了该插件,所以显示的内容不太一样)。然后重启Android Studio。在代码中使用 在布局文件名上,右键选择“Confirm”后,就会自动生成各个在布局文件中带有id 属性的view的注解形式。