2013-04-24 8 views
7

ScrollViewの中にリスト(TextViewLinearLayoutの中にあります)を持つダイアログがあります。次のようなレイアウトは次のとおりです。スクロールビューでダイアログ内の最下部が消えます

それは、リスト上の唯一のいくつかの項目を次のようになります
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ProgressBar 
     android:id="@+id/delete_progress" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="gone" /> 

    <ScrollView 
     android:id="@+id/filename_scroll" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

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

    <View 
     android:id="@+id/horisontal_separator" 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="@android:color/darker_gray" /> 

    <LinearLayout 
     android:id="@+id/button_container" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" > 

     <Button 
      android:id="@+id/load_button" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="@string/button_load" 
      android:gravity="center" 
      android:layout_weight="1" /> 

     <View 
      android:layout_width="1dp" 
      android:layout_height="fill_parent" 
      android:background="@android:color/darker_gray" /> 

     <Button 
      android:id="@+id/delete_button" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="@string/button_delete" 
      android:gravity="center" 
      android:layout_weight="1" /> 
    </LinearLayout> 

</LinearLayout> 

A few items on the list

しかし、画面に収まらないほどあります(とスクロールする実際の必要性があります)とき私のボタンは画面の下に押し込まれます。下のすべての方法をスクロールすると、それは次のようになります。私はフッターとして滞在するボタンを含むLinearLayoutが必要 A lot of items on the list

、それはどこにもスクロールしないと明らかに消えるべきではありません。私はレイアウトの高さと重さを手に入れようとしましたが、無駄にしました。

+0

ListViewを固定高さ、たとえば200dipに設定しようとしましたか? – Demonick

+0

私は実際の 'ListView'を持っていませんが、' LinearLayout'の高さを変更しても違いはありません。そして 'ScrollView'の高さを変更すると、ボタンが再び押し出されます。 – j0ntech

答えて

19

は、私はあなたが明示的にそのような

<ScrollView 
    android:id="@+id/filename_scroll" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > ////say android:layout_height="50dp" 

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

ようScrollviewのlayout_heightを言及すべきだと思うscrollView

<ScrollView 
    android:id="@+id/filename_scroll" 
    android:layout_width="match_parent" 
    android:layout_weight="1" 
    android:layout_height="0dp" > 
+0

これは完全に正常に動作しています。なぜ、どのように起こっているのか説明してください。 –

+0

これも私のために働いた!なぜこれがうまくいくのかについての説明が大好きです。 – Vinnie

0

に変更してみてください。もう1つの選択肢は、layout_heightを明示的に指定し、スクロールビューをそのままインクルードすることで、テーブルレイアウトのような外部コンポーネントを導入することです。

は、それはあなたが表示したいカスタムダイアログ、

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <ListView 
     android:id="@+id/gameList" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="30dip" /> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" > 

     <Button 
      android:id="@+id/load" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Load" /> 

     <Button 
      android:id="@+id/delete" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Delete" /> 
    </LinearLayout> 
</FrameLayout> 

そして、あなたがこのようにそれを呼び出すためのXMLレイアウト以下

+0

リストの項目数に応じてサイズを変更する必要があるため、明示的に指定する必要はありません。とにかく、umeshの答えはまさに私が必要としたものでした。 – j0ntech

+0

それは私の作品です。スクロールビューはコンテナとして機能し、動的コンテンツを使用しています。 20nos以上。とにかく、うれしく思うよ –

0

使用を作品ホープクラスファイル

>  Button getList = (Button) findViewById(R.id.getList); 
>  getList.setOnClickListener(new View.OnClickListener() { 
>  
>    @Override 
>  public void onClick(View v) { 
>  // TODO Auto-generated method stub 
>  final Dialog listDialog = new Dialog(MainActivity.this); 
>  listDialog.setTitle("Load a game"); 
>  listDialog.setContentView(R.layout.custom_dialog); 
>  
>  ListView gameList = (ListView) listDialog.findViewById(R.id.gameList); 
>  gameList.setAdapter(new ArrayAdapter<String>   (MainActivity.this,android.R.layout.simple_list_item_1,new String[] {"your array" })); 
>  
>  Button dismiss = (Button) listDialog.findViewById(R.id.load); 
>  dismiss.setOnClickListener(new View.OnClickListener() { 
>  
>   @Override 
>   public void onClick(View v) { 
>    // TODO Auto-generated method stub 
>    listDialog.dismiss(); 
>      } 
>   }); 
>  
>   listDialog.show(); 
>  
>   } }); 
+0

その 'marginBottom'のものはかなり賢いですが、私はすでに答えを得ています。また、私の元のレイアウトは 'ListView'を持っていませんでした。あなたはその質問を読んだことがありますか? – j0ntech

+0

こんにちはjOntech、私はすでにそれを読んで、私はあなたのための代替ソリューションをお勧めします。そして、このサンプルはあなたの目的に合っており、サンプルを実行しています。それを確認しましたか? –

関連する問題