2017-04-01 46 views
0

在我的活动中,我使用的工作正常的折叠工具栏。在菜单中有一个图标,点击后会触发底部图纸视图,底部图纸将出现。再次点击底部表单会再次崩溃。如何在同一活动中使用折叠工具栏和底部工作表视图?

这里是它的xml。

<?xml version="1.0" encoding="utf-8"?> 

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context="com.example.aadesh.khabriuncle.ArticleScreenActivity"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appBar" 
    android:layout_width="match_parent" 
    android:layout_height="300dp" 
    android:fitsSystemWindows="true" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsingToolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="#7fff" 
     app:expandedTitleMarginEnd="64dp" 
     app:expandedTitleMarginStart="48dp" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     app:title=""> 

     <FrameLayout 
      android:id="@+id/tags_article" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="bottom" 
      android:background="#7000" 
      android:visibility="visible"> 

      <ImageView 
       android:id="@+id/toolbarImage" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:fitsSystemWindows="true" 
       android:scaleType="centerCrop" 
       app:layout_collapseMode="parallax" /> 

      <LinearLayout 
       android:id="@+id/tags" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="bottom" 
       android:background="@drawable/shape_chips" 
       android:orientation="horizontal" 
       android:visibility="gone" /> 


     </FrameLayout> 


     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbarArticleScreen" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:navigationIcon="@drawable/ic_chevron_left_black_24dp" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 

     </android.support.v7.widget.Toolbar> 


    </android.support.design.widget.CollapsingToolbarLayout> 

</android.support.design.widget.AppBarLayout> 

<android.support.v4.widget.NestedScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/titletext" 
      style="@style/Article.title" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

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

      <TextView 
       android:id="@+id/author" 
       style="@style/Article.date" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_alignParentLeft="true" /> 

      <TextView 
       android:id="@+id/datetext" 
       style="@style/Article.date" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_alignParentRight="true" /> 

     </RelativeLayout> 

     <WebView 
      android:id="@+id/webview" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 


    </LinearLayout> 
</android.support.v4.widget.NestedScrollView> 

<android.support.v4.widget.NestedScrollView 
    android:id="@+id/comments_bottomSheet" 
    android:layout_width="match_parent" 
    android:layout_height="250dp" 
    android:background="@color/colorAccent" 
    android:clipToPadding="true" 
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/titlebottom" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:padding="16dp" 
      android:textAllCaps="true" 
      android:textSize="16sp" /> 

     <TextView 
      android:id="@+id/textbottom" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:padding="16dp" 
      android:textAllCaps="true" 
      android:textSize="12sp" /> 

    </LinearLayout> 


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

这是我如何设置它在Java

public boolean onOptionsItemSelected(MenuItem item) { 

    if (item.getItemId() == R.id.comments) { 
     Log.i(TAG, "selected item is " + item); 
     if (bottomSheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) { 
      Log.i(TAG, "the state is " + bottomSheetBehavior.getState()); 
      bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); 
     } else { 
      Log.i(TAG, "the state is " + bottomSheetBehavior.getState()); 
      bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 
     } 
    } 
    return super.onOptionsItemSelected(item); 

} 

的问题是,每当活动开始显示的底部片材视图。当我点击菜单图标时,什么也没有发生。 即使我打印的日志正在显示。

可能是什么原因?

回答

0

以及一些事情都需要做 我会举一个例子来指导你在正确的方向。

步骤1: 编辑通过添加

android:windowSoftInputMode="stateHidden|stateAlwaysHidden" 

步骤2清单文件:在用于活动XML文件 Place的底部片材的布局。

<RelativeLayout 
      android:id="@+id/bottom_sheet" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:behavior_hideable="true" 
      app:behavior_peekHeight="0dp" 
      app:layout_behavior="com.package.ui.utils.BottomSheetBehaviorStiff"> 

第3步: 添加BottomSheetBehaviorStiff到utils的:

public class BottomSheetBehaviorStiff<V extends View> extends BottomSheetBehavior<V> { 
    private boolean mAllowUserDragging = true; 

    /** 
    * Default constructor for instantiating BottomSheetBehaviors. 
    */ 
    public BottomSheetBehaviorStiff() { 
     super(); 
    } 


    public BottomSheetBehaviorStiff(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public void setAllowUserDragging(boolean allowUserDragging) { 
     mAllowUserDragging = allowUserDragging; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) { 
     if (!mAllowUserDragging) { 
      return false; 
     } 
     return super.onInterceptTouchEvent(parent, child, event); 
    } 
} 

第4步: 现在在你的活动将其初始化:

 RelativeLayout bottomSheetLayout = (RelativeLayout) 
     findViewById(R.id.bottom_sheet); 
       bottomSheetBehaviorStiff = (BottomSheetBehaviorStiff) 

    BottomSheetBehaviorStiff.from(bottomSheetLayout); 
      bottomSheetBehaviorStiff.setAllowUserDragging(false); 
      bottomSheetBehaviorStiff.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { 
       @Override 
       public void onStateChanged(@NonNull View bottomSheet, int newState) { 
        if (newState == BottomSheetBehavior.STATE_HIDDEN) { 
         hideKeyBoard(); 
        } 
       } 

       @Override 
       public void onSlide(@NonNull View bottomSheet, float slideOffset) { 
       } 
      }); 
相关问题