Java 设置tablerow元素的权重

Java 设置tablerow元素的权重,java,android,android-layout-weight,Java,Android,Android Layout Weight,我试图以编程方式设置tablerow中textview和复选框的权重。经过一些研究,我发现LayoutParams的第三个参数用于实现这一点。然而,它似乎不起作用。有人能看看这个代码,看看问题出在哪里吗?谢谢(使用线性布局建议编辑) 不能将权重与RelativeLayout一起使用。您需要使用LinearLayout。我不知道这对你是否有效,但我希望它仍然有帮助 使用LinearLayout而不是RelativeLayout谢谢,我相信这将适用于权重功能,有没有想法使用LinearLayout版

我试图以编程方式设置tablerow中textview和复选框的权重。经过一些研究,我发现LayoutParams的第三个参数用于实现这一点。然而,它似乎不起作用。有人能看看这个代码,看看问题出在哪里吗?谢谢(使用线性布局建议编辑)


不能将权重与RelativeLayout一起使用。您需要使用LinearLayout。我不知道这对你是否有效,但我希望它仍然有帮助

使用LinearLayout而不是RelativeLayout谢谢,我相信这将适用于权重功能,有没有想法使用LinearLayout版本的新设置不会使用父视图的整个宽度?(已编辑的主块)使用换行内容方法与填充内容方法这将为您提供所需的所有信息:
public LayerSelectorView(Context context) 
{
    super(context);
    this.context = context;
    float density = context.getResources().getDisplayMetrics().density;

    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);
}