2015-09-28 3 views
0

Я хочу выровнять по вертикали CheckBox и их текст/метки.Этикетки флажка не выровнены по вертикали при добавлении программно

добавить флажок программно, как это:

private LinearLayout ProposalLayout; 
ProposalLayout = (LinearLayout) findViewById(R.id.ll_proposals); 
this.ProposalLayout = ProposalLayout; 

Iterator<Proposal> iter = q.getListProposals().iterator(); 
while (iter.hasNext()) { 
    Proposal p = iter.next(); 
    CheckBox cb = new CheckBox(activity); 
    cb.setText(p.getProposal()); 
    cb.setId(p.getId()); 
    ProposalLayout.addView(cb); 
} 

Вот мой макет:

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

     <CheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="60dp" 
      android:text="New CheckBox" 
      android:id="@+id/checkBox" /> 

     <CheckBox 
      android:layout_width="wrap_content" 
      android:layout_height="70dp" 
      android:text="New CheckBox" 
      android:id="@+id/checkBox2" /> 
</LinearLayout> 

CheckBox добавлены в макете хороши. Первый, добавленный программно, замечательный, но другие не выровнены по вертикали (их метки).

EDIT: Это идеально выровнены, когда я заменяю:

cb.setText(p.getProposal()); 

по:

cb.setText("test test test"); 

Проблема была в файле XML, был разрыв строки, я просто не видел это в журналах.

+0

Что вы имеете в виду под «не вертикально совмещенных (их меткам)»? Какое выравнивание вам нужно? – mixel

+0

Я имею в виду флажок, выровненный с меткой, в той же строке. – HJerem

+0

О, я думал, вы хотите выровнять левый, центральный или правый. Не могли бы вы добавить снимок экрана с неглавным флажком? И что не так с методом getProposal()? Укажите исходный код. – mixel

ответ

0

Определите параметры макета для вашего флажка, а затем установите их как параметр. Первый Формуляр Титулы:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,  
ViewGroup.LayoutParams.WRAP_CONTENT); 
params.gravity = Gravity.CENTER_VERTICAL; 

Затем добавить мнение:

ProposalLayout.addView(cb, params); 
+0

Просто сделал это, но метки все еще не выровнены. – HJerem

+0

Итак, попробуйте cb.setGravity (CENTER_VERTICAL) в вашем коде итератора. –

+0

Если вам нужно выровнять ярлык слева, замените 'Gravity.CENTER_VERTICAL' на' Gravity.LEFT'. – mixel

0

Попробуй это ..

устанавливается высота обоих CheckBox с до wrap_content в XML

android:layout_height="70dp" 

-

android:layout_height="wrap_content" 
+0

Эти два 'CheckBox' предназначены только для тестирования. Они правильно отображаются, а их метки расположены по вертикали. Я хочу выровнять те, которые добавлены программно. – HJerem

0

Вы можете использовать решение, предложенное Thomas R. Он должен работать. Или вы можете попробовать мое:

... 
while (iter.hasNext()) { 
    ... 
    cb.setParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,  
ViewGroup.LayoutParams.WRAP_CONTENT)); 
    ... 
} 

И добавить

<LinearLayout 
    ... 
    android:gravity="left"> 
+0

Решение, предложенное Томасом Р., не работает, а ваше либо к сожалению. – HJerem