将视图动态添加到表行中

时间:2012-10-22 12:51:10

标签: android android-view android-tablelayout

我的表格布局有几行,每行包含一个textView和一个editText。我有一个空白行,我想动态填充textView和editText。我添加了一个textView(臀部),但它没有显示为其他。见下文,在第3行中textView显示为trasnparent。我想动态地在上面的行中添加相同的textView和editText。

enter image description here

 TableRow row = (TableRow) findViewById(R.id.tblHips);
     TextView txt=new TextView(getApplicationContext());
     txt.setTextAppearance(getApplicationContext(), android.R.attr.textAppearanceLarge);
     txt.setId(R.id.txtHipId);
     txt.setText("Hips");
     row.addView(txt);

我只为腰部以下的行添加了代码 -         

        <TextView
            android:id="@+id/TextView02"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:text="Waist"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <EditText
            android:id="@+id/EditText02"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:inputType="numberDecimal" />

    </TableRow>

    <TableRow
        android:id="@+id/tblHips"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

    </TableRow>

    <TableRow
        android:id="@+id/tableRow7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioGroup
            android:id="@+id/rdMs"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/radio0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:text="Imperial" />

            <RadioButton
                android:id="@+id/radio1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Metric" />
        </RadioGroup>

    </TableRow>

1 个答案:

答案 0 :(得分:0)

TextView看起来透明的原因是文本的alpha未设置为255. txt.setAlpha(255);将解决该问题。

如果您只想拥有一个隐藏字段,解决问题的最佳方法是将所有视图放在xml中,并使用android:visibility="gone"“隐藏”隐藏的视图。然后在您的代码中,您可以在View.GONE View.VISIBLE之间切换(您希望使用已删除,因为它会从布局中删除视图)。

如果你真的需要在运行时添加视图,你需要指定每个小细节,如文本大小(并用不同的dpi更改它),文本颜色/ alpha等。这很快成为支持的噩梦。在这种情况下,您应该创建一个单独的布局.xml文件,并使用布局inflater生成视图。

LayoutInflater inflater = this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TableRow row = (TableRow)inflater.inflate(R.layout.hips, container, false);
//where 'container' is the containing TableView & 'this' is an activity