2017-03-03 3 views
1

こんにちは私はScrollViewとその中に垂直LinearLayoutを持っています。各LinearLayoutスロットの中には、単語と数字の2つのものを保持する水平なLinearLayoutがあります。問題は、いくつかの単語が隠されていることですか?それは画面の半分を占めます。助けてくれてありがとう。LinearLayoutハーフスクリーンを使用

Layout bounds

Problem


for (int i = 0; i < words.size(); i++) { 
    LinearLayout horizontal = new LinearLayout(context); 
    horizontal.setOrientation(LinearLayout.HORIZONTAL); 
    LinearLayout.LayoutParams LLParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
    horizontal.setLayoutParams(LLParams); 

    btnWord.add(i, new Button(context)); 
    btnWord.get(i).setHeight(60); 
    btnWord.get(i).setWidth(120); 
    btnWord.get(i).setTypeface(montFont); 
    btnWord.get(i).setBackgroundColor(Color.WHITE); 
    btnWord.get(i).setTag(i); 
    btnWord.get(i).setGravity(Gravity.CENTER); 
    btnWord.get(i).setText(" " + words.get(i)); 
    btnWord.get(i).setOnClickListener(btnClicked); 
    horizontal.addView(btnWord.get(i)); 

    wordWeight.add(i, new Button(context)); 
    wordWeight.get(i).setHeight(60); 
    wordWeight.get(i).setWidth(40); 
    wordWeight.get(i).setTypeface(montFont); 
    wordWeight.get(i).setBackgroundColor(Color.WHITE); 
    wordWeight.get(i).setTag(i); 
    wordWeight.get(i).setGravity(Gravity.CENTER); 
    wordWeight.get(i).setText(" " + wordWeights.get(i)); 
    wordWeight.get(i).setOnClickListener(btnClicked); 
    horizontal.addView(wordWeight.get(i)); 

    linearLayout.addView(horizontal); 
} 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/white"> 


    <ScrollView 
     android:layout_width="match_parent" 
     style="@android:style/Widget.ScrollView" 
     android:layout_marginTop="106dp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_height="match_parent"> 

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

    </ScrollView> 
</RelativeLayout> 
+0

デベロッパーオプションにアクセスし、「レイアウトレイアウトを表示」を有効にし、別のスクリーンショットを撮ってここに投稿してください。 – Mauker

+0

レイアウトの境界が追加されました@Mauker –

+1

プログラムでビューを追加するのではなく、カスタムアダプタまたは 'RecyclerView'で' ListView'を使用してみませんか? – Mauker

答えて

2

彼らは同じように、画面上のスペースを分割しますので、あなたは1に各 "項目" のweightを設定しようとすることができ。以下のスニペットのような何かは:あなたがthis blog post上で見ることができるよう

LinearLayout ll; 
LinearLayout.LayoutParams lp; 
lp.weight = 1; 
ll.setLayoutParams(lp); 

また、そのロジックを捨てて、私はthis answerに行ったようにカスタムアダプタでListViewを使用するか、またはセットアップRecyclerViewことができます。いずれかを行う方が簡単で効率的です。

続きを読むListViewRecyclerViewhereです。

+3

これは、OPが使用している間違った解決策に対する「正しい」答えです。 :)重みを使用してこのリストをプログラムで作成するのは、単純なListViewまたはRecyclerViewを削除するより効率が低く、保守が難しいです。しかし、問題を解決するための+1 :) –