2017-08-14 18 views
13

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

<android.support.constraint.ConstraintLayout 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/linearLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.TextInputLayout 
    android:id="@+id/textInputLayout" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="16dp" 
    android:layout_marginEnd="16dp" 
    android:layout_marginStart="16dp" 
    android:layout_marginTop="16dp" 
    android:background="@android:color/darker_gray" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintEnd_toEndOf="parent" 
    app:layout_constraintStart_toStartOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.0"> 

    <android.support.design.widget.TextInputEditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="hint" /> 
</android.support.design.widget.TextInputLayout> 

यह BottomSheetDialogFragment:

public class TestFragment extends BottomSheetDialogFragment { 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

    getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

    return inflater.inflate(R.layout.fragment_test, container, true); 
} 

}

यह वांछित परिणाम है:

यह लेआउट है 0 enter image description here

और यह परिणाम है कि मैं कुछ संस्करणों में हो रही है:

enter image description here

मैं के साथ वांछित परिणाम हो रही है: एंड्रॉयड 7.0 साथ

  • Galaxy S6
  • < = एंड्रॉइड 5.1

और के साथ कोई वांछित परिणाम: एंड्रॉयड 7.1.2 (LineageOS 14.1) के साथ

  • एम्युलेटर

    • नेक्सस 5 => एंड्रॉयड 6,0

    क्या किसी को पता है कि क्यों ऐसा होता है या कैसे हल करने के लिए यह?

    अग्रिम धन्यवाद !!!

    चीयर्स।

  • उत्तर

    2

    इस मुद्दे ने मेरा 1 घंटा बर्बाद कर दिया। ADJUST_RESIZE का उपयोग न करें।

    बस NestedScrollView के अंदर अपना लेआउट लपेटें।

    कुछ और नहीं। कुछ भी कम नहीं। समस्या हल हो गई।

    यहाँ एक्सएमएल

    <?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"> 
    
        <android.support.constraint.ConstraintLayout 
         android:id="@+id/linearLayout" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent"> 
    
         <android.support.design.widget.TextInputLayout 
          android:id="@+id/textInputLayout" 
          android:layout_width="0dp" 
          android:layout_height="wrap_content" 
          android:layout_marginBottom="16dp" 
          android:layout_marginEnd="16dp" 
          android:layout_marginStart="16dp" 
          android:layout_marginTop="16dp" 
          android:background="@android:color/darker_gray" 
          app:layout_constraintBottom_toBottomOf="parent" 
          app:layout_constraintEnd_toEndOf="parent" 
          app:layout_constraintStart_toStartOf="parent" 
          app:layout_constraintTop_toTopOf="parent" 
          app:layout_constraintVertical_bias="0.0"> 
    
          <android.support.design.widget.TextInputEditText 
           android:layout_width="match_parent" 
           android:layout_height="wrap_content" 
           android:hint="hint" /> 
         </android.support.design.widget.TextInputLayout> 
    
        </android.support.constraint.ConstraintLayout> 
    
    </android.support.v4.widget.NestedScrollView> 
    

    यहाँ है स्रोत कोड

    public class DemoFragment extends BottomSheetDialogFragment { 
    
        @Override 
        public void onCreate(@Nullable Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
        } 
    
        private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() { 
    
         @Override 
         public void onStateChanged(@NonNull View bottomSheet, int newState) { 
          if (newState == BottomSheetBehavior.STATE_HIDDEN) { 
           dismiss(); 
          } 
         } 
    
         @Override 
         public void onSlide(@NonNull View bottomSheet, float slideOffset) { 
         } 
        }; 
    
        @Override 
        public void setupDialog(Dialog dialog, int style) { 
         super.setupDialog(dialog, style); 
         View contentView = View.inflate(getContext(), R.layout.fragment_layout, null); 
         dialog.setContentView(contentView); 
    
         CoordinatorLayout.LayoutParams layoutParams = 
           (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams(); 
         CoordinatorLayout.Behavior behavior = layoutParams.getBehavior(); 
         if (behavior != null && behavior instanceof BottomSheetBehavior) { 
          ((BottomSheetBehavior) behavior).setBottomSheetCallback(mBottomSheetBehaviorCallback); 
         } 
        } 
    
    } 
    
    +0

    मैंने कोशिश की, लेकिन मैं एक ही परिणाम हो रही है है। क्या आप कृपया इस्तेमाल किए गए एक्सएमएल पेस्ट कर सकते हैं? धन्यवाद – Buntupana

    +0

    @ बुंटुपाना ने उत्तर अपडेट किया। कृपया समाधान का प्रयास करें और मुझे परिणाम बताएं। :) –

    +0

    देरी के लिए खेद है, मैं विदेश में था। मैंने आपको कॉपी किया है और आपको चिपकाया है और फिर भी यह काम नहीं कर रहा है। मैंने एंड्रॉइड ओ – Buntupana