我的OnClickListener
永远不会被触发,我只尝试为此按钮创建侦听器,然后现在已实现OnClickListener
。 {Child}在子类中调用initToolbarAndDrawerWithReadableName
方法为this.initToolbarAndDrawerWithReadableName
。我做错了什么?
Toolbar.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/end"
android:gravity="center|end"
android:id="@+id/auth_toolbar"
android:theme="@style/AppTheme">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageButton
android:layout_width="35dp"
android:layout_height="26dp"
android:id="@+id/drawer_button"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@drawable/menu_active"
android:scaleType="fitXY"
android:clickable="true"/>
</RelativeLayout>
</android.support.v7.widget.Toolbar>
初始化工具栏
protected void initToolbarAndDrawerWithReadableName(String title) {
toolbarTv = (TextView)findViewById(R.id.toolbarTv);
toolbarTv.setText(title);
toolbarTv.setOnClickListener(this);
View child = (View)getLayoutInflater().inflate(R.layout.drawer_header, null);
nvDrawer = (NavigationView) findViewById(R.id.nvView);
nvDrawer.addHeaderView(child);
mToolbar = (Toolbar) findViewById(R.id.auth_toolbar);
setSupportActionBar(mToolbar);
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
setupDrawerContent(nvDrawer);
imageButton = (ImageButton) mToolbar.findViewById(R.id.drawer_button);
imageButton.setOnClickListener(this);
}
的OnClick:
@Override
public void onClick(View v) {
Log.d("click","i am here");
switch (v.getId()){
case R.id.drawer_button:{
mDrawer.openDrawer(GravityCompat.START);
break;
}
case R.id.toolbarTv:{
mDrawer.openDrawer(GravityCompat.START);
break;
}
}
}
答案 0 :(得分:1)
将这行鳕鱼添加到xml中。它将调用每次按下按钮时所做的onClick方法
android:onClick="onClick"
尝试让你的xml看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/end"
android:gravity="center|end"
android:id="@+id/auth_toolbar"
android:theme="@style/AppTheme">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageButton
android:layout_width="35dp"
android:layout_height="26dp"
android:id="@+id/drawer_button"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="@drawable/menu_active"
android:onClick="onClick"
android:scaleType="fitXY"
android:clickable="true"/>
</RelativeLayout>
</android.support.v7.widget.Toolbar>
确保onClick类在活动中,但不在任何其他活动中。前
main activity{
create(){}
other(){}
onClick(){}
otherOther(){}
}
另外,注释掉现在声明监听器的方法,看它是否有效,它对我有用
答案 1 :(得分:1)
查看您的xml文件,您只定义 ImageButton , toolbarTv 没有TextView,也没有为switch语句定义的click方法。
<强>尝试强>
<TextView
android:id="@+id/toolbarTv"
android:layout_width="35dp"
android:layout_height="26dp"
android:id="@+id/toolbarTv"
android:onClick="onClick"
android:clickable="true"/>
答案 2 :(得分:0)
不是将Click侦听器设置为ImageButton,而是将其添加到父RelativeLayout,因为此处父级正在拦截click事件。
答案 3 :(得分:0)
使用Butter Knife Link Tutorial和GitHub Simple,
1)将此添加到您的依赖项
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
2)将此添加到build.gradle中的依赖项
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
befor
apply plugin: 'android-apt'
添加
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
3)在你的活动中添加它
@BindView(R.id.drawer_button) ImageButton drawer_button;
4)然后添加
@OnClick(R.id.drawer_button)
public void openDrawer() {
mDrawer.openDrawer(GravityCompat.START);
}