2017-03-03 4 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

당신은 그래서 그들은 동등하게 화면에 공간을 나눕니다 한 각 "항목"의 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 문제를 해결하기위한 :) –

관련 문제