15

Klasörle Klavyeden ayrılmaLütfen son zamanlarda yeni Destek tasarım kitaplığını kullanmaya başladım ve son zamanlarda çok kötü bir hata keşfettim.KoordinatörLayout with CollapsingToolbar Dialog parçası

Bir AppBarLayout ve herhangi bir kaydırılabilir görünüm barındıran bir CoordinatorLayout'um var mı, bu bir ViewPager, NestedScrollView veya gerekli kaydırma davranışı ile bir RecyclerView olsun; Klavyeyi görüntüleyen bir iletişim parçasını görüntülemeyi seçmek, AppBarLayout uygulamasının kayan görünümden ayrılmasına neden olur ve artık birlikte kaydırma yapmazlar.

Ayrıca, kaydırma görünümü alttaki ekranın yarısına yeniden boyutlandırılmak zorundadır ve AppBar düzeni, gerekmediği halde üst yarısını alır.

böcek bir video

buradadır: Youtube Link

DÜZENLEME:

Faaliyetinizdeki Klavyenin softInputMode ayarlama "adjustPan" sorunu giderir için. Görünüşe göre KoordinatorLayout, klavye tarafından dinamik olarak yeniden boyutlandırılmaktan hoşlanmaz.

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

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="192dp" 
    android:background="@color/transparent"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="144dp" 
     android:elevation="4dp" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginBottom="@dimen/quadruple_margin" 
     app:layout_collapseParallaxMultiplier="0.7" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:animateLayoutChanges="true" 
      android:background="@color/primary" 
      android:orientation="vertical"> 

      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_gravity="bottom" 
       android:adjustViewBounds="true" 
       android:scaleType="centerCrop" 
       android:src="@drawable/ranking_background" /> 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_alignParentTop="true" 
       android:layout_gravity="bottom" 
       android:background="@color/black_40" /> 

      <de.hdodenhof.circleimageview.CircleImageView 
       android:id="@+id/profile_picture" 
       android:layout_width="@dimen/double_margin" 
       android:layout_height="@dimen/double_margin" 
       android:layout_alignBottom="@+id/text" 
       android:layout_marginLeft="@dimen/double_margin" 
       android:layout_marginStart="@dimen/double_margin" 
       android:src="@drawable/image_placeholder" 
       android:visibility="gone" /> 

      <TextView 
       android:id="@+id/text" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_alignWithParentIfMissing="true" 
       android:layout_marginLeft="@dimen/single_margin" 
       android:layout_marginStart="@dimen/single_margin" 
       android:layout_marginTop="@dimen/quadruple_margin" 
       android:layout_toRightOf="@+id/profile_picture" 
       android:text="@string/my_places_for" 
       android:textColor="@color/white" 
       android:textSize="20sp" 
       android:visibility="gone" /> 

      <TextView 
       android:id="@+id/sub_text" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/text" 
       android:layout_marginLeft="@dimen/single_margin" 
       android:layout_marginStart="@dimen/single_margin" 
       android:layout_marginTop="@dimen/single_margin" 
       android:text="@string/pick_category_or_business" 
       android:textColor="@color/white" 
       android:textSize="16sp" 
       android:visibility="gone" /> 
     </RelativeLayout> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/action_bar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/abc_action_bar_default_height_material" 
      app:contentInsetLeft="@dimen/triple_margin" 
      app:contentInsetStart="@dimen/triple_margin" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/Theme.AppCompat.NoActionBar" 
      app:theme="@style/Theme.AppCompat.NoActionBar" /> 
    </android.support.design.widget.CollapsingToolbarLayout> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/primary" 
     app:layout_scrollFlags="scroll"> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="48dp" 
      android:layout_alignParentBottom="true" 
      android:background="@color/primary" 
      android:elevation="4dp" 
      app:layout_scrollFlags="enterAlways" 
      app:tabGravity="fill" 
      app:tabMode="fixed" 
      app:tabSelectedTextColor="@color/white" 
      app:tabTextColor="@color/grey_400" /> 
    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 

cevap

9

, ama mutlaka altında yalan meselesi. https://code.google.com/p/android/issues/detail?id=176373#c5

Yani junya tarafından sağlanan bu geçici çözümü kullanmak düzeltmek ve

ile görünümün davranışını ayarlamak için:

koordinatör düzeni kaydırma davranışı onun alt görünümler üzerinde geçersizlik adımı sırasında elimizde bir sorunu var

app:layout_behavior="com.app.common.PatchedScrollingViewBehavior" 

ve kullanım: son com.android.support:appcompat için

public class PatchedScrollingViewBehavior extends AppBarLayout.ScrollingViewBehavior { 

    public PatchedScrollingViewBehavior() { 
     super(); 
    } 

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

    @Override 
    public boolean onMeasureChild(CoordinatorLayout parent, View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) { 
     if(child.getLayoutParams().height == -1) { 
      List dependencies = parent.getDependencies(child); 
      if(dependencies.isEmpty()) { 
       return false; 
      } 

      AppBarLayout appBar = findFirstAppBarLayout(dependencies); 
      if(appBar != null && ViewCompat.isLaidOut(appBar)) { 
       if(ViewCompat.getFitsSystemWindows(appBar)) { 
        ViewCompat.setFitsSystemWindows(child, true); 
       } 

       int scrollRange = appBar.getTotalScrollRange(); 
//    int height = parent.getHeight() - appBar.getMeasuredHeight() + scrollRange; 
       int parentHeight = View.MeasureSpec.getSize(parentHeightMeasureSpec); 
       int height = parentHeight - appBar.getMeasuredHeight() + scrollRange; 
       int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.AT_MOST); 
       parent.onMeasureChild(child, parentWidthMeasureSpec, widthUsed, heightMeasureSpec, heightUsed); 
       return true; 
      } 
     } 

     return false; 
    } 


    private static AppBarLayout findFirstAppBarLayout(List<View> views) { 
     int i = 0; 

     for(int z = views.size(); i < z; ++i) { 
      View view = (View)views.get(i); 
      if(view instanceof AppBarLayout) { 
       return (AppBarLayout)view; 
      } 
     } 

     return null; 
    } 
} 
6

Git Android için: onlar CollapsingToolbarLayout kullanmak

kusurlu XML bu gibi görünüyor, ama ben onlardan olmaktan tümü arasında ortak eleman ile, bu davranışlar birden XML varyasyonları tezahür ve "Pencere yumuşak giriş modu" değiştirin: Tunji_D tarafından sağlanan yanıt sorunu çözecektir

android:windowSoftInputMode="adjustPan|adjustNothing" 
+0

Mükemmel adamlar! Çok teşekkürler ! – anthony

0

deneyin güncelleme - Benim için çalıştı.