2017-04-23 16 views
0

私はそれに2-4行を持つことができるListViewを持っています。私は行の高さを変更して均等にし、LinearLayoutの残りのスペースを埋めるようにします。ListViewの行の高さを調整して残りの領域を占有するにはどうすればよいですか?

これは私が持っているものの抜粋です:

activity_layout.xml:

<LinearLayout 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:layout_alignParentRight="true" 
android:layout_alignParentEnd="true" 
android:layout_alignParentLeft="true" 
android:layout_alignParentStart="true" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="180dp" 
      android:background="@drawable/quiz_question_box" 
      android:textColor="#000000" 
      android:textAlignment="center" 
      android:gravity="center_vertical" 
      android:textSize="25sp" 
      android:id="@+id/question_text_view"/> 

     <ListView 
      android:id="@+id/options_listview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:choiceMode="singleChoice"/> 
</LinearLayout> 

row_layout.xml:

<?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" 
android:background="@color/colorPrimary" 
android:padding="0dp"> 

<TextView 
    android:id="@+id/row_content_text_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="10dp" 
    android:layout_marginStart="10dp" 
    android:padding="10dp" 
    android:textColor="#FFFFFF" 
    android:gravity="center_vertical" 
    android:textSize="20sp"> 
</TextView> 

</LinearLayout> 

は私にこれを与える:

enter image description here

私は行が均等に分散されることを期待してrow_layout.xmlでのLinearLayoutが、運を含め、と考えることができますほとんどすべての重みを設定しようとしました。また、私のアダプタのgetViewメソッドでビューのパラメータを設定しようとしました:

@Override 
public View getView(int position, View convertView, ViewGroup parent){ 
    View view = super.getView(position, convertView, parent); 
    view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0.5f)); 
    if((position % 2 == 1) && (position != getNumberOfItemsInList())){ 
     view.setBackgroundResource(R.drawable.quiz_middle_answer_bordered_light); 
    } else if ((position % 2 == 1) && (position == getNumberOfItemsInList())) { 
     view.setBackgroundResource(R.drawable.quiz_bottom_answer_rounded_light); 
    } else if ((position % 2 == 0) && (position != getNumberOfItemsInList())){ 
     view.setBackgroundResource(R.drawable.quiz_middle_answer_bordered_dark); 
    } else { 
     view.setBackgroundResource(R.drawable.quiz_bottom_answer_rounded_dark); 
    } 
    return view; 
} 

しかし、それはどちらも機能していません。どうすればこれを達成できますか?

答えて

0

あなたのテキストビューでは、身長をラップコンテキストと宣言しました。つまり、身長の低い身長を取ることになります。これは通常あなたがしたいことです。 しかし、それらがスペース全体を埋めるようにするには、親と一致するように高さを設定する必要があります。重量彼らに

+0

どのような要素を設定していますか?行ファイルのLinearLayout? TextView? –

+0

私は仕事の後で完全な例を投稿します:) – BAAAZINGA

0

はここで、あなたが何ができるか

1です)での画面の高さを探す:今すぐ完全なオブジェクトを占有し、したがって、あなたがアンドロイドを割り当てる必要が画面から他をプッシュするためにそれらのいずれかを防ぐために

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();  
float dpHeight = displayMetrics.heightPixels/displayMetrics.density; 

DP

は、画面の半分の高さを見つけ、リストアダプタ

2)項目数によって、この値を分割するために、この値を渡します。メソッドを呼び出すことができますgetItemCount()

これで、各リストビューの子の高さを確認しました。 getView()で、この値で線形レイアウトの高さを設定できます。

0

デバイスの画面とは独立した大きさの行を割り当てます。

関連する問題