2016-06-14 10 views
1

いいえ、私はボトムシートの動作をサポートするアプリケーションを持っています。何を試しても、最初の最初のショー2回目に同じコードがトリガされると、下のシートに要素が表示されます。これは、ダイナミックに追加されたビューとリストビューの両方で発生しています。Androidのボトムシートの動作が正常に動作していません。最初の実行時に表示されません

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

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


    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="brijhelpline.testproject.MapsActivity" /> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:alpha="0.9" 
     android:background="@drawable/gradient"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <ProgressBar 
       android:id="@+id/progressBar" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_below="@+id/settings" 
       android:indeterminate="false" 
       android:visibility="gone" /> 

      <ImageView 
       android:id="@+id/userIcon" 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:layout_alignParentLeft="true" 
       android:layout_marginTop="13dp" 
       android:background="@drawable/user" /> 

      <ImageView 
       android:id="@+id/settings" 
       android:layout_width="38dp" 
       android:layout_height="38dp" 
       android:layout_alignParentRight="true" 
       android:layout_marginRight="3dp" 
       android:layout_marginTop="10dp" 
       android:background="@drawable/settings_icon" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:layout_marginTop="20dp" 
       android:text="Fuel Buddy" 
       android:textColor="#ffffff" 
       android:textSize="20sp" /> 
     </RelativeLayout> 
    </android.support.v7.widget.Toolbar> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/toolbar" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:background="@drawable/searc_layout"> 

     <ImageView 
      android:id="@+id/marker" 
      android:layout_width="20dp" 
      android:layout_height="30dp" 
      android:layout_alignParentLeft="true" 
      android:layout_margin="10dp" 
      android:background="@drawable/marker_icon" /> 

     <ImageView 
      android:id="@+id/add" 
      android:layout_width="25dp" 
      android:layout_height="26dp" 
      android:layout_alignParentRight="true" 
      android:layout_margin="10dp" 
      android:background="@drawable/add_icon" /> 

     <EditText 
      android:id="@+id/inputStation" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:layout_toLeftOf="@+id/add" 
      android:layout_toRightOf="@+id/marker" 
      android:hint="Поиск Заправки" 
      android:maxLines="1" /> 
    </RelativeLayout> 


</RelativeLayout> 

<android.support.v4.widget.NestedScrollView 
    android:id="@+id/bottom_sheet" 
    android:layout_width="match_parent" 
    android:layout_height="300dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:background="@android:color/white" 
    android:clipToPadding="true" 
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> 

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

    </LinearLayout> 
    <!--<ListView--> 
    <!--android:id="@+id/listView"--> 
    <!--android:layout_width="match_parent"--> 
    <!--android:layout_height="match_parent"></ListView>--> 
</android.support.v4.widget.NestedScrollView> 

あなたは、リストビューがコミットされて見ることができるように、私は、すべての可能な方法を試してみましたでもRELATIVELAYOUTでNESTEDSCROLLVIEWを交換したり、ここwhatsoever.And実際のLinearLayoutにビューを追加するコードです。

 for (int i = 0; i < loopContent; i++) { 
        String address = addresses.get(i).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex() 
        String city = addresses.get(i).getLocality(); 
        String state = addresses.get(i).getAdminArea(); 
        String country = addresses.get(i).getCountryName(); 
        String postalCode = addresses.get(i).getPostalCode(); 
        String knownName = addresses.get(i).getFeatureName(); // Only if available else return NULL 
        if (knownName.equals("null") || knownName.toString().isEmpty()) { 
         knownName = "Нету информации"; 
        } 
        if (address != null) { 
         if (address.toString().isEmpty() || address.equals("null")) { 
          address = "Нету информации"; 
         } 
        } else { 
         address = "Нету информации"; 
        } 
//     holder = new Holder(knownName, address); 
//     holderArrayList.add(holder); 
//     adapter.notifyDataSetChanged(); 

        LayoutInflater inflater = LayoutInflater.from(getApplicationContext()); 
        View inflatedLayout = inflater.inflate(R.layout.single_item, null, false); 
        TextView header = (TextView) inflatedLayout.findViewById(R.id.header); 
        TextView street = (TextView) inflatedLayout.findViewById(R.id.second); 
        header.setText(knownName); 
        street.setText(address); 
        layoutToAdd.addView(inflatedLayout); 
       } 
       progressBar.setVisibility(View.GONE) 
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); 

私は誰も私を助けることができれば、私は完全にそれをいただければ幸いですので、それはすでに私は本当に迷惑です... isssue、何それを行うには何かに完全に無知です。

答えて

8

これまでのところ、私はそれがGoogleのバグであることを発見しました。一方、私が見つけた回避策があります。あなたが設定し、実際のショーをしたいときはいつでも、それが崩壊したり拡大している場合に関係なくは、単に新しい実行可能を投稿してみませんかのように設定します

bottomSheet.post(new Runnable() { 
        @Override 
        public void run() { 
         mBottomSheetBehavior.setPeekHeight(200); 
         mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 
        } 
       }); 
+0

は、Googleがバグを解決する場合、私は疑問に思う、私をたくさん助けたありがとう –

0

このコードは、いくつかの事前のと同じように、私の作品ロリポップデバイスボトムシートは、これはこれは私のために働いた

+0

驚くほどうまくいくyyyessssss。間違いなく受け入れられた答えでなければならない。なぜ、それがバグかどうか、私たちは知っていますか? Thx! –

1

を助け

ViewCompat.postOnAnimation(coordinator, new Runnable() { 
      @Override 
      public void run() { 
       ViewCompat.postInvalidateOnAnimation(coordinator); 
      } 
     }); 

希望を動作しません。

代わりの

mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 

を設定し、私はボトムシートを崩壊に問題に直面していたこの

mBottomSheetBehavior.setState(mBottomSheetBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN ? BottomSheetBehavior.STATE_COLLAPSED : BottomSheetBehavior.STATE_HIDDEN); 
1

を行います。私はピークの高さを設定することで解決しました。あなたがしたい場合

mBottomSheetBehavior.setPeekHeight(0); 

BottomSheetはあなたBottomSheetBehaviorを初期化した後、あなたは、このようなコードを追加することができ、倒壊や隠しする:

関連する問題