0

每次我将 TextView 的布局参数设置为包装内容或填充父级时,它都不会显示在视图中,但是当我将其设置为像素时,它可以正常工作,为什么会这样?

以下是相关代码:

items = (LinearLayout) findViewById(R.id.llmain);
        tb = new TableLayout(MainActivity.this);

        tb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        tb.setGravity(Gravity.CENTER);


            TableRow tr = new TableRow(MainActivity.this);
            ImageButton ima = new ImageButton(MainActivity.this);
            ImageButton imr = new ImageButton(MainActivity.this);
            TextView tvin = new TextView(this);

            TableRow.LayoutParams trp = new TableRow.LayoutParams();
            trp.setMargins(0, 0, 0, 10);
            tr.setLayoutParams(trp);
            tr.setGravity(Gravity.CENTER);

            ima.setBackgroundColor(Color.TRANSPARENT);
            ima.setImageResource(R.drawable.add);

            imr.setBackgroundColor(Color.TRANSPARENT);
            imr.setImageResource(R.drawable.remove);

            tvin.setWidth(100);
            tvin.setHeight(45);
            tvin.setGravity(Gravity.CENTER);
            tvin.setText(sil[i]);
            tvin.setBackgroundColor(Color.rgb(200, 0, 255));

            tr.addView(ima);
            tr.addView(tvin);
            tr.addView(imr);

            tb.addView(tr);

        items.addView(tb);

我试过用这个

tvin.setLayoutParams(new LayoutParams(
            LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));

还有这个

tvin.setWidth(LayoutParams.FILL_PARENT);
tvin.setHeight(LayoutParams.FILL_PARENT);

但这些都不起作用。

4

3 回答 3

4

尝试:

tvin.setLayoutParams(new TableRow.LayoutParams(
            LayoutParams.MATCH_PARENT,
            LayoutParams.WRAP_CONTENT));

并删除 tvin.setWidth 和高度。

在这种情况下,您应该始终设置视图父级 TableRow 的布局参数。MATCH_PARENT 没有区别,但它是一个新名称,您应该使用它而不是 FILL_PARENT。

于 2012-10-17T08:41:17.140 回答
1

在这条线你必须使用高度和宽度..TableRow.LayoutParams trp = new TableRow.LayoutParams();像这样

TableRow row = new TableRow(context);
row.setLayoutParams(new android.widget.TableRow.LayoutParams(android.widget.TableRow.LayoutParams.FILL_PARENT,
                android.widget.TableRow.LayoutParams.WRAP_CONTENT));
于 2012-10-17T09:03:37.563 回答
1

尝试使用LinearLayout.LayoutParams

    TextView tvin = new TextView(this);
    LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
    tvin.setLayoutParams(llp);
于 2012-10-17T09:40:16.063 回答