2012-07-02 3 views
1

Я пытаюсь программно установить вес текстового поля и флажка в табло. После некоторых исследований я обнаружил, что для этого используется третий параметр LayoutParams. Однако, похоже, он не работает. Может кто-нибудь взглянуть на этот код и посмотреть, в чем проблема? Благодарю. (Под редакцией LinearLayout)Настройка веса элементов tablerow

public LayerSelectorView (контекстный контекст) { супер (контекст); this.context = context; float density = context.getResources(). GetDisplayMetrics(). Плотность;

linearLayout = new LinearLayout(context); 
    linearLayout.setOrientation(LinearLayout.VERTICAL); 
    final LinearLayout.LayoutParams mainParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
    linearLayout.setLayoutParams(mainParams); 

    titleText = new TextView(context); 
    titleText.setTextAppearance(context, android.R.style.TextAppearance_Large); 
    titleText.setText("Select Layers"); 
    titleText.setTextColor(Color.WHITE); 
    titleText.setId(id); 

    final LinearLayout.LayoutParams titleParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
    titleParams.setMargins(20, 20, 0, 0); 
    titleText.setLayoutParams(titleParams); 

    linearLayout.addView(titleText); 
} 
public void updateView() 
{ 

    overlays = ((MapActivity)context).getMapView().getOverlays(); 

    loadLayers(); 

    this.addView(linearLayout); 

    linearLayout.setBackgroundColor(0x88000000); 
    linearLayout.invalidate(); 
    this.invalidate(); 
} 
public void loadLayers() 
{ 
    TableLayout table = new TableLayout(context); 
    final LinearLayout.LayoutParams tableParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
    table.setLayoutParams(tableParams); 
    int i = id+1; 
    for(final MapOverlay mo: overlays) 
    {  
     TableRow tblRow = new TableRow(context); 

     TextView layer = new TextView(context); 
     TableRow.LayoutParams trParams = new TableRow.LayoutParams(0, LayoutParams.FILL_PARENT, 1f); 
     layer.setTextAppearance(context, android.R.style.TextAppearance_Large); 
     layer.setText(mo.getName()); 
     layer.setTextColor(Color.WHITE); 
     layer.setId(i); 
     i++; 
     layer.setLayoutParams(trParams); 

     final CheckBox chk = new CheckBox(context); 
     TableRow.LayoutParams trParams1 = new TableRow.LayoutParams(0, LayoutParams.FILL_PARENT, .2f); 
     chk.setLayoutParams(trParams1); 
     chk.setFocusable(false); 
     chk.setClickable(false); 
     chk.setChecked(true); 

     tblRow.addView(layer); 
     tblRow.addView(chk); 
     table.addView(tblRow); 

     tblRow.setOnClickListener(new OnClickListener(){ 

      public void onClick(View v) { 
       if(mo.isVisible()) 
       { 
        mo.setVisible(false); 
        chk.setChecked(false); 
       } 
       else 
       { 
        mo.setVisible(true); 
        chk.setChecked(true); 
       } 
      } 

     }); 
    } 
    linearLayout.addView(table); 
} 
+0

Использование LinearLayout вместо RelativeLayout –

ответ

0

Вы не можете использовать весы с RelativeLayout. Вам нужно использовать LinearLayout. Я не знаю, будет ли это работать для вас, но я надеюсь, что это поможет.

+0

Спасибо, я считаю, что это будет работать для функции веса, любая идея, что эта новая настройка с версией linearlayout не использует всю ширину родительского представления? (отредактированный основной блок) – user1496741

+0

Используйте метод wrap_content против fill_parent – BlackHatSamurai

+0

Это должно предоставить вам всю необходимую информацию: http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html – BlackHatSamurai

Смежные вопросы