2016-10-07 28 views
2

ルートのルートリストがあるGoogle Maps Navigational BottomSheetのようなナビゲーションボトムシートを作成したいと思います。私はアンドロイドのBottomSheetBehaviourを使用してボトムシートを開きます。私が現在直面している問題は、リストビューがポップアップしたときに下のシートレイアウト内に表示されないということです。ビューは単に空白です。私は同じ結果を得るためにNestedScrollView内で自分自身を拡大しようとしましたが、それも表示されませんでした。Androidリストビューがボトムシートに表示されない

これは私のbottomsheetのXML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/bottomSheet1" 
android:orientation="vertical" 
android:paddingLeft="20dp" 
android:paddingRight="20dp" 
android:elevation="4dp" 
android:background="@color/white" 
app:layout_behavior="android.support.design.widget.BottomSheetBehavior" 
android:clipToPadding="true" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:text="This is a sheet with listview." 
    android:textSize="20dp" 
    android:layout_marginTop="10dp" 
    android:textColor="@color/primaryText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:text="This is a secondary text!" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<android.support.v4.widget.NestedScrollView 
    android:visibility="gone" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

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


    </LinearLayout> 

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

<ListView 
    android:id="@+id/bottomSheetListview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

そして、私のJavaコードである、

View bottomSheetView = findViewById(R.id.bottomSheet1); 
ListView listView = (ListView) findViewById(R.id.bottomSheetListview); 
List<String> listData = getListData(); //returns a simple array list of strings, about 15 items 
listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listData)); 
mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheetView); 
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); 

は、私はここで何も悪いことをやっていますか?ライトビューやスクロールビューが表示されないのはなぜですか?

enter image description here

編集 私の全体の活動

public class BottomSheetActivity extends AppCompatActivity { 

     private static final String TAG = "==> BottomSheetActivity"; 

     BottomSheetBehavior mBottomSheetBehavior; 
     Button peek; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_bottom_sheet); 
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(toolbar); 

      this.peek = (Button) findViewById(R.id.peek); 

      peek.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        showSheet1(); 
       } 
      }); 

     } 

     private List<String> getListData(){ 
      List<String> stringList = new ArrayList<>(); 
      for (int i = 0; i < 15; i++) { 
       stringList.add("This is string number "+i); 
      } 

      return stringList; 
     } 

     private void showSheet1(){ 
      if(mBottomSheetBehavior != null){ 
       //hide any previous bottom sheets 
       mBottomSheetBehavior.setHideable(true); 
       mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); 
      } 
      //initialize a new sheet 
      View bottomSheetView = findViewById(R.id.bottomSheet1); 

      ListView listView = (ListView) bottomSheetView.findViewById(R.id.bottomSheetListview); 
      listView.setVisibility(View.VISIBLE); 
      List<String> listData = getListData(); 
      listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listData)); 

      mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheetView); 
      mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); 
     } 


    } 

activity_bottom_sheet.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" 
    android:fitsSystemWindows="true" 
    tools:context="com.vedamic.androidtutorial.BottomSheetActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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

    <include layout="@layout/content_bottom_sheet" /> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@android:drawable/ic_dialog_email" /> 

    <include layout="@layout/layout_bottom_sheet_1" /> 

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

content_bottom_shee.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    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" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.vedamic.androidtutorial.BottomSheetActivity" 
    tools:showIn="@layout/activity_bottom_sheet"> 

    <Button 
     android:id="@+id/peek" 
     android:text="peek 1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/expand" 
     android:text="peek 2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/flipboardSheet" 
     android:text="Flipbard BottomSheets" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <ListView 
     android:id="@+id/testListView" 
     android:visibility="gone" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

</LinearLayout> 
+0

おそらく、あなたのNestedScrollViewのlayout_height = "match_parent"ですか? –

+0

NestedScrollViewの可視性をGONEに設定しようとしましたが、アプリケーションを再実行しましたが、これは同じ結果です。 – Yogesh

答えて

2

私はあなたのxmlとアンドロイドスタジオ「プレビュー」確かにListViewは左のスペースを持っていないので、android:layout_height="match_parent"NestedScrollViewは全体のスペースを取ることが示されたインポート。

enter image description here

こと NestedScrollView ListViewがあり android:visibility="gone"に十分なスペースを設定する場合。

enter image description here

はだから今それは何も示されていない唯一の理由は、あなたのlistDataが空であるためかもしれないのですか?

EDIT

OK私はすべての情報を実装し、スタイルは非常に厄介です。まず第一に、1のボタンはツールバーの後ろにあります。

enter image description here

しかし、私はまだそれをクリックすることができますので、これは起こる:

enter image description here

+0

努力をいただきありがとうございますが、私はプロセスをデバッグし、私のリストデータは15の項目を示し、アダプタのgetView()も15回コールされました。問題は解決しません。これがどう起こっているのでしょうか? – Yogesh

+0

下部シートを追加するアクティビティクラスのコード全体を提供できますか? –

+1

私はアクティビティコードを投稿しました! – Yogesh

1

いけないあなたのリストビューの可視性を最初に行ってください。ボトムはどんなサイズであるべきかを知っているべきです。可視性をなくす必要がある場合は、下のシートが作成された後に行います。

あなたのボトムシートで試してみてください._bottom_sheexml親線形レイアウト

android:fillViewport="true" 
関連する問題