2016-07-18 6 views
1

ナビゲーションメニュー用のDrawerLayout、ツールバー、FrameLayoutでコンテンツの断片を表示するアクティビティがあります。フラグメントでは、いくつかのコンテンツを含むビューがあります。たとえば、プロファイルアバターの場合はImageView、プロファイル名の場合はTextViewです。 Fragmentが下にスクロールしているときに、私はActivityからToobarを崩壊させる必要があります(Toolbar/ToobarのView /でフラグメントからコンテンツを隠す)し、FragmentがスクロールアップしているときはToolbarを展開する必要があります。コーディネータレイアウトの折りたたみフラグメントのアクティビティのツールバー

enter image description here

活動

<android.support.v4.widget.DrawerLayout 
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:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".activity.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <include 
      android:id="@+id/myToolBar" 
      layout="@layout/activity_main_toolbar" /> 

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

    <FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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

<ListView 
    android:id="@+id/list_slider_menu" 
    android:layout_width="@dimen/main_activity_slider_menu_list_view_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:background="@color/list_background" 
    android:choiceMode="singleChoice" 
    android:divider="@color/list_divider" 
    android:dividerHeight="@dimen/main_activity_slider_menu_list_view_divider_height" 
    android:listSelector="@drawable/drawer_list_selector" /> 

断片

<android.support.v4.widget.SwipeRefreshLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/cabinetSwipeRefreshLayout" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
tools:context="com.geodevteam.geopay.project.activity.UserProfileActivity"> 

<ScrollView 
    android:id="@+id/cabinetScrollView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/app_child_layout_background" 
    android:fillViewport="false"> 

    <LinearLayout 
     android:id="@+id/cabinetRootLayout" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <LinearLayout 
      android:id="@+id/cabinetTopLayout" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <RelativeLayout 
       android:id="@+id/cabinetInformationLayout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:paddingTop="5dp" 
       android:paddingLeft="10dp" 
       android:paddingRight="10dp" 
       android:paddingBottom="1dp" 
       android:background="@color/cello_transparent"> 

       <com.geodevteam.geopay.project.utils.graphics.RoundedImageView 
        android:id="@+id/cabinetAvatarImageView" 
        android:layout_width="100dp" 
        android:layout_height="100dp" 
        android:layout_marginTop="5dp" 
        android:layout_centerHorizontal="true" /> 

       <TextView 
        android:id="@+id/cabinetNameTextView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/cabinetAvatarImageView" 
        android:layout_centerHorizontal="true" 
        android:layout_marginTop="5dp" 
        style="@style/ProfileNameTextView"/> 

       <TextView 
        android:id="@+id/cabinetTelephoneTextView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/cabinetNameTextView" 
        android:layout_centerHorizontal="true" 
        android:layout_marginTop="5dp" 
        android:visibility="gone" 
        style="@style/ProfileSimpleTextView"/> 

       <TextView 
        android:id="@+id/cabinetAddTelephoneTextView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/cabinetTelephoneTextView" 
        android:layout_centerHorizontal="true" 
        android:layout_marginTop="5dp" 
        android:visibility="gone" 
        style="@style/ProfileSimpleTextView"/> 

       <TextView 
        android:id="@+id/cabinetBalanceTextView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/cabinetAddTelephoneTextView" 
        android:layout_centerHorizontal="true" 
        android:layout_marginTop="5dp" 
        style="@style/ProfileSimpleTextView"/> 

      </RelativeLayout> 

      <RelativeLayout 
       android:id="@+id/cabinetTrustLineLayout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:padding="3dp" 
       android:background="@color/cello_transparent"> 

      </RelativeLayout> 

     </LinearLayout> 

     <RelativeLayout 
      android:id="@+id/cabinetContractorListLayout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:id="@+id/trustLineTitleTextView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:layout_alignParentTop="true" 
       android:layout_marginTop="8dp" 
       style="@style/CabinetTrustLinesTextView" 
       android:text="@string/trust_lines" /> 

      <ProgressBar 
       android:id="@+id/cabinetProgressBar" 
       style="?android:progressBarStyleLarge" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="15dp" 
       android:layout_centerHorizontal="true" 
       android:visibility="gone"/> 

      <ListView 
       android:id="@+id/cabinetContractorsListView" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_below="@id/trustLineTitleTextView" 
       android:layout_marginTop="2dp"> 

      </ListView> 

     </RelativeLayout> 

    </LinearLayout> 

</ScrollView> 

どのように私はcabinetTopLayoutを非表示にすることができますツールバー(下にスクロールするとツールバーを折りたたむ)?それが可能だ?

答えて

1
  1. 利用NestedScrollView代わりのフラグメントXMLでScrollView
  2. フラグメントコンテナに追加する代わりに、属性 app:layout_behavior="@string/appbar_scrolling_view_behavior"NestedScrollViewに設定します。

フル作業例:最初のxと我々は見つけることができ、最終的なxの値を使用することにより

activity.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"> 

    <fragment 
     android:id="@+id/fragment" 
     android:name="io.victoralbertos.stackoverflow.ChildFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:layout="@layout/child_fragment"/> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     app:layout_scrollFlags="scroll|enterAlways"/> 

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


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

child_fragment.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.NestedScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

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

    <TextView 
     android:layout_width="match_parent" 
     android:background="@color/colorAccent" 
     android:textSize="150sp" 
     android:text="Scroll me as much as you need" 
     android:layout_height="match_parent"/> 
    </LinearLayout> 

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

それは良いトリックですが、私はアクティビティからのフラグメント間のウィッチング、私はactivity.xmlに静的フラグメントを含める必要はありません。 –

+0

私はそれが何か変わるとは思わない。あなたの特定の状況にこのソリューションを適用しようとしましたか? –

+0

私は英語が貧しいので、私が必要とするものを詳細に説明することはできません。だから私はimgを添付 –

0
Fragment can access the parent activity instance with getActivity().by using that instance you can access the parent activity views 

//This is your view reference 
View view = getActivity().findViewById(R.id.toobar); 

//This is your scroll view reference 
scroll = (ScrollView) rootView.findViewById(R.id.scrooll_id); 
//Adding on touch listener 
scroll.setOnTouchListener(this); 

@Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // mGestureDetector.onTouchEvent(event); 

     switch (event.getAction) { 

      switch (action) { 

      case MotionEvent.ACTION_DOWN: 
      //Initial values 
       initialX = event.getX(); 
       initialY = event.getY(); 

       // Log.d(TAG, "Action was DOWN"); 
       break; 

      case MotionEvent.ACTION_MOVE: 
       // Log.d(TAG, "Action was MOVE"); 
       break; 

      case MotionEvent.ACTION_UP: 
      //final values 
       float finalX = event.getX(); 
       float finalY = event.getY(); 


       break; 

      case MotionEvent.ACTION_CANCEL: 
       Log.d(TAG, "Action was CANCEL"); 
       break; 



      } 





     return false; 
    } 
+0

スクロールアップまたはダウン – Siva

関連する問題