2015-06-30 11 views
32

मैं एक लेआउट में NestedScrollView का उपयोग कर रहा हूं, और CollapsingToolbarLayout के लिए डिज़ाइन समर्थन लाइब्रेरी से नए समन्वयक लेआउट का उपयोग करने का प्रयास कर रहा हूं।क्लिक ईवेंट के साथ विचारों से स्क्रॉल करने का प्रयास करते समय स्क्रॉल ने NestedScrollView में काम नहीं किया है

मेरे लेआउट फ़ाइल इस तरह दिखता है:

<?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" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 

      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 
      <!--   app:expandedTitleMarginEnd="64dp"--> 
      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="200dp" 
       android:scaleType="centerCrop" 
       android:src="@drawable/image_load_default_big" /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/anim_toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       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:id="@+id/nestedScrollVw" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|enterAlways" 
     android:fitsSystemWindows="true" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:clickable="false" 
      android:fitsSystemWindows="true"> 

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

       <Button 
        android:id="@+id/changePasswordExpand" 
        android:layout_width="match_parent" 
        android:layout_height="55dp" 
        android:background="@drawable/back_img" 
        android:text="Change Your Password" 
        android:textColor="@color/white" 
        android:textStyle="bold" /> 
      </LinearLayout> 


      <LinearLayout 
       android:id="@+id/changePasswordContainer" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/changePasswordButtonContainer" 
       android:layout_centerInParent="true" 
       android:orientation="vertical" 
       android:padding="10dp"> 


       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        android:text="Edit Your Password" 
        android:textColor="@color/orange" /> 

       <EditText 
        android:id="@+id/etUserName" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:background="@drawable/edittext_default_bg" 
        android:drawableLeft="@drawable/password_icon" 
        android:drawableRight="@drawable/tick" 
        android:hint=" Old Password" 
        android:padding="12dp" 
        android:password="true" 
        android:textColorHint="#b5b5b5" /> 

       <EditText 
        android:id="@+id/etPass" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:background="@drawable/edittext_default_bg" 
        android:drawableLeft="@drawable/password_icon" 
        android:drawableRight="@drawable/cross" 
        android:hint=" New Password" 
        android:padding="12dp" 
        android:password="true" 
        android:textColorHint="#b5b5b5" /> 

       <RadioButton 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:paddingBottom="20dp" 
        android:paddingTop="20dp" 
        android:text="show password" /> 

       <Button 
        android:id="@+id/btnSingIn" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_margin="4dp" 
        android:background="@drawable/login_button_background" 
        android:paddingBottom="8dp" 
        android:paddingTop="8dp" 
        android:text="Done" 
        android:textColor="@color/white" 
        android:textStyle="bold" /> 
      </LinearLayout> 

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

       <Button 
        android:id="@+id/dealerToDealerExpand" 
        android:layout_width="match_parent" 
        android:layout_height="55dp" 
        android:background="@drawable/back_img" 
        android:text="Dealer To Dealer Platform No" 
        android:textColor="@color/white" 
        android:textStyle="bold" /> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/dealerToDealerContainer" 
       android:layout_centerInParent="true" 
       android:orientation="vertical" 
       android:padding="10dp"> 


       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        android:text="Edit Number" 
        android:textColor="@color/orange" /> 

       <EditText 
        android:id="@+id/dealerToDealerNo" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="10dp" 
        android:background="@drawable/edittext_default_bg" 
        android:drawableLeft="@drawable/password_icon" 
        android:drawableRight="@drawable/tick" 
        android:hint=" 56546789" 
        android:padding="12dp" 
        android:password="true" 
        android:textColorHint="#b5b5b5" /> 

       <Button 
        android:id="@+id/dealerToDealerNoDone" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_margin="4dp" 
        android:background="@drawable/login_button_background" 
        android:paddingBottom="8dp" 
        android:paddingTop="8dp" 
        android:text="Done" 
        android:textColor="@color/white" 
        android:textStyle="bold" /> 
      </LinearLayout> 

     </RelativeLayout> 
    </android.support.v4.widget.NestedScrollView> 
</android.support.design.widget.CoordinatorLayout> 

जब मैं स्क्रॉल करने के लिए प्रयास करते हैं, कभी कभी यह काम नहीं करता। इसके लिए कारण है, क्लिक घटनाओं के साथ लेआउट के अन्य तत्व स्पर्श घटना का उपभोग कर रहे हैं। मूल रूप से संपादित टेक्स्ट, रेडियो बटन, बटन स्पर्श घटनाओं का उपभोग कर रहे हैं। इस समस्या को हल करने के लिए कोई सुझाव?

+0

क्या आपने अंदर क्लिक करने योग्य दृश्यों के साथ स्क्रॉल करने का संकल्प किया था? आपने 'fill_vertical' के साथ हल किया है लेकिन मेरे लिए यह केवल खाली स्थान भरें। यह अभी भी क्लिक करने योग्य विचारों के साथ स्क्रॉल नहीं करता है। – Davidea

+0

fill_vertical समस्या को हल नहीं किया है, ऐसा लगता है कि समस्या CollapsingToolbar के साथ है, क्योंकि अगर हम CollapsingToolbar को हटा देते हैं तो यह ठीक काम करना शुरू कर देता है। – bhai

+0

22.2.1 के साथ, यह हल हो गया है, क्या आप पुष्टि कर सकते हैं? – Davidea

उत्तर

20

मुझे एक ही समस्या थी। ऐसा तब होता है जब NestedScrollView सामग्री ऊंचाई डिवाइस स्क्रीन की ऊंचाई से कम होती है। तो वैकल्पिक हल यह स्क्रीन ऊंचाई आकार परिवर्तन बनाने के लिए अपने NestedScrollView अंदर देखने के लिए setMinimumHeight(..) विधि का उपयोग करने के लिए है:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getBaseActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int screenHeight = displaymetrics.heightPixels; 

int actionBarHeight = 0; 
TypedValue tv = new TypedValue(); 
if (getBaseActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { 
    actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); 
} 

view.setMinimumHeight(screenHeight - actionBarHeight); 

जहां view है अपने RelativeLayout

यह मेरे सामने ठीक काम करता है। उम्मीद है कि यह आपको

+0

यह सही समाधान है। बहुत सारे धन्यवाद –

+1

दृश्य की न्यूनतम ऊंचाई को स्क्रीन पर सेट करना हैइट - एक्शनबारहेट, समस्या का समाधान नहीं किया मेरे लिए। मैंने इसे थोड़ा बड़ा सेट करने की कोशिश की (उदाहरण के लिए: स्क्रीनहेइट - एक्शनबैरहाइट +5) और यह काम किया। कोई विचार क्यों? – Sandra

+0

क्या यह अभी भी आवश्यक है? यह एंड्रॉइड/सामग्री डिजाइन के लिए मौलिक लगता है। इसे कैसे नजरअंदाज किया जा सकता है? –

2

आपके स्क्रॉल व्यू में से एक सभी घटनाओं को पहले दृश्य में भेज देगा जो प्रेषण मोशनएवेंट पर सही उत्तर देता है।

आप अपने ऐप में ऐसे परिदृश्य का उपयोग करने से बच सकते हैं या ACTION_DOWN का उपभोग नहीं करने के लिए सभी प्रेषणमोशनवेन्ट विधियों (स्क्रॉल और दृश्यों से) को ओवरराइड कर सकते हैं।

+0

में भी समस्या थी, कृपया आप अपने उत्तर को शुरुआती के लिए थोड़ा और स्पष्ट कर सकते हैं :) –

2

अपने AndroidManifest.xml में, सुनिश्चित करें कि आपके पास 'windowSoftInputMode' विशेषता 'adjustResize' पर सेट है।

<activity android:name=".activities.YourActivity" android:windowSoftInputMode="adjustResize"> 
संबंधित मुद्दे

 संबंधित मुद्दे