2015-10-16 72 views
0

我有一个活动,当单击菜单项时显示抽屉布局,因此其方向是从右到左。我设法使用下面的代码显示导航菜单。无法单击右侧至左侧DrawerLayout项目

public class Forecast_details extends ActionBarActivity implements OnChartValueSelectedListener { 

.... 
@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     //return false; 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 

     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     if(id==R.id.Options){ 

      if (mDrawerlayout.isDrawerOpen(Gravity.END)){ 
        mDrawerlayout.closeDrawer(Gravity.END); 

       }else 
        mDrawerlayout.openDrawer(Gravity.END); 

     } 
     return super.onOptionsItemSelected(item); 

    } 

我的抽屉式导航栏包含一个静态列表,所以我也懒得做一个列表视图出来的,如下图所示,

enter image description here

但是我不能点击抽屉布局内我的项目,或者视图中的任何内容,甚至v4.widget.DrawerLayout在我的xml中都是不可点击的。下面是我使用的两个xml文件。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
    <include 
     android:id="@+id/tool_bar" 
     layout="@layout/tool_bar" 
     ></include> 
     <android.support.v4.widget.DrawerLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/drawer_layout_right" 
      android:layout_gravity="end" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:clickable="true"> 

      <include layout="@layout/nav_drawer_right" /> 

      <ScrollView 
       android:id="@+id/scrollView1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="2.36" > 

      .... 

       </LinearLayout> 
      </ScrollView> 
    </android.support.v4.widget.DrawerLayout> 
</LinearLayout> 

nav_drawer_right.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollView_right" 
    android:layout_width="100dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="end" 
    android:background="#2c3e50" 
    android:paddingTop="20dp" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <FrameLayout 
      android:id="@+id/container_fragment2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      android:layout_marginTop="1dp" > 

     </FrameLayout> 

      <LinearLayout 
       android:id="@+id/linearLayout_menuconatiner" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:clickable="true" 
       android:orientation="vertical" 
       android:paddingLeft="2dp" 
       android:paddingRight="2dp" > 

       <ImageView 
        android:id="@+id/imageView_forward" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@color/darkblue" 
        android:clickable="true" 
        android:onClick="SendClick" 
        android:padding="5dp" 
        android:scaleType="fitCenter" 
        android:src="@drawable/ic_forward" /> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="3dip" 
        android:background="@color/separatorcolor" 
        android:paddingLeft="2dp" 
        android:paddingRight="2dp" /> 

       <ImageView 
        android:id="@+id/imageView_request" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@color/darkblue" 
        android:padding="5dp" 
        android:src="@drawable/ic_request" /> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="3dip" 
        android:background="@color/separatorcolor" 
        android:paddingLeft="2dp" 
        android:paddingRight="2dp" /> 

       <ImageView 
        android:id="@+id/imageView_reloadvnet" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@color/darkblue" 
        android:padding="5dp" 
        android:src="@drawable/ic_updatevnet" /> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="3dip" 
        android:background="@color/separatorcolor" 
        android:paddingLeft="2dp" 
        android:paddingRight="2dp" /> 

       <ImageView 
        android:id="@+id/imageView_reloadvsms" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@color/darkblue" 
        android:padding="5dp" 
        android:src="@drawable/ic_updatevsms" /> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="3dip" 
        android:background="@color/separatorcolor" 
        android:paddingLeft="2dp" 
        android:paddingRight="2dp" /> 

       <ImageView 
        android:id="@+id/imageView_feedback" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@color/darkblue" 
        android:padding="5dp" 
        android:src="@drawable/ic_feedback" /> 

       <View 
        android:layout_width="fill_parent" 
        android:layout_height="3dip" 
        android:background="@color/separatorcolor" 
        android:paddingLeft="2dp" 
        android:paddingRight="2dp" /> 

      </LinearLayout> 
     </RelativeLayout> 


</ScrollView> 

请帮帮忙。我尝试了很多东西,使它象使用列表视图,而不是工作,但我仍然没有运气..请不要帮忙,林新在使用抽屉布局时,可能会出现一些我需要知道的内容..预先感谢您。

回答

0

为了防止返回OnClickListener父级布局需要在drawerLayout容器中设置android:clickable="true"

<android.support.v4.widget.DrawerLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/drawer_layout_right" 
     android:layout_gravity="end" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent">  

     <ScrollView 
      android:id="@+id/scrollView1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="2.36" > 

      .... 

     </ScrollView> 

     <include layout="@layout/nav_drawer_right" /> 

</android.support.v4.widget.DrawerLayout> 

nav_drawer_right.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/scrollView_right" 
android:layout_width="100dp" 
android:layout_height="match_parent" 
android:layout_gravity="end" 
android:background="#2c3e50" 
android:paddingTop="20dp" > 

    .... 

</ScrollView> 

在活动

public class MainActivity extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    DrawerLayout mDrawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout_right); 
    ScrollView sV = (ScrollView) findViewById(R.id.scrollView1); 

    mDrawerLayout.openDrawer(Gravity.RIGHT); 

    sV.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      System.out.println("drawer click >>>>>>>>>>>>>>>>>>"); 
     } 
    }); 

    } 
}