2017-04-01 13 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ファイルに。

<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: utilsのにBottomSheetBehaviorStiffを追加します。

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) { 
       } 
      }); 
関連する問題