我正在使用android drawerlayout但左抽屉中的任何touchlisteners(包括按钮onclicks)都无法正常工作。 每当我尝试触摸左侧抽屉时,立即关闭。
我在MainActivity.java中的源代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerView = (LinearLayout) findViewById(R.id.left_drawer);
mDrawerLayout.setDrawerListener(myDrawerListener);
mDrawerView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.i("myTag", "hello world");
return true;
}
});
findViewById(R.id.drawer_my_btn).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("myTag", "my");
}
});
findViewById(R.id.drawer_shared_btn).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("myTag", "shared");
}
});
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
createMemo(savedInstanceState);
}
和activity_main.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/left_drawer"
android:layout_width="170dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/bg"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:layout_marginLeft="10dp">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center|left"
android:text="Company: "/>
<TextView
android:id="@+id/drawer_company_code"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center|left"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:layout_marginLeft="10dp">
<TextView
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center|left"
android:text="ID: "/>
<TextView
android:id="@+id/drawer_user_id"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:gravity="center|left"/>
</LinearLayout>
<Button
android:id="@+id/drawer_my_btn"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="My Notes"/>
<Button
android:id="@+id/drawer_shared_btn"
android:layout_width="match_parent"
android:layout_height="40dp"
android:text="Shared Notes"/>
</LinearLayout>
<uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout
android:id="@+id/ptr_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<adapter.StaggeredGridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:item_margin="8dp"
app:column_count="@integer/grid_column_count"
android:background="@drawable/bg"/>
</uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout>
</android.support.v4.widget.DrawerLayout>
当我尝试触摸其中的left_drawer或按钮时,不会调用onCreate中显示的日志。
我尝试过click_ =“true”到left_drawer,但它不起作用。 这是焦点问题吗?还是touchevent问题? 请帮帮我!
答案 0 :(得分:0)
通过重新排序xml中的布局,它已经解决了! 我必须首先放入pulltorefreshlayout,然后放入left_drawer(linearlayout)。
谢谢Mike!