我使用LinearLayout作为需要包含3列的表。 我需要感觉行,我不知道如何从运行时的代码中做到这一点。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
android:paddingTop="4dip"
android:paddingBottom="6dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView android:id="@+id/Cell1"
android:layout_width="50dip"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/Cell2"
android:layout_width="70dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView android:id="@+id/Cell3"
android:layout_width="60dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
答案 0 :(得分:1)
这是生成相当于.xml中声明的布局的代码
你可以把它放在活动的某个地方(所以this
指的是你的活动)
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
row.setPadding(0, 4, 0, 6);
row.setOrientation(LinearLayout.HORIZONTAL);
// creating and setting the cells now
// cell 1
TextView cell1 = new TextView(this);
// convert dip into pixels for LayoutParams constructor
// as it only understands px
int widthPix1 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
50, getResources().getDisplayMetrics());
row.addView(cell1, new LinearLayout.LayoutParams(
widthPix1, LinearLayout.LayoutParams.WRAP_CONTENT));
// cell 2
TextView cell2 = new TextView(this);
int widthPix2 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
70, getResources().getDisplayMetrics());
row.addView(cell2, new LinearLayout.LayoutParams(
widthPix2, LinearLayout.LayoutParams.WRAP_CONTENT, 1));
// cell 3
TextView cell3 = new TextView(this);
int widthPix3 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
60, getResources().getDisplayMetrics());
row.addView(cell3, new LinearLayout.LayoutParams(
widthPix3, LinearLayout.LayoutParams.WRAP_CONTENT, 1));
正如您所看到的,代码量明显大于布局在.xml中时的代码量,而您只需使用
进行充气LinearLayout row = (LinearLayout) inflater.inflate(R.layout.row, null);
当你想要按照你要求的方式去做时,我几乎无法想象。
无论如何,尽情享受。
答案 1 :(得分:1)
如果我找对你,我的建议是:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout"
android:paddingTop="4dip"
android:paddingBottom="6dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView android:id="@+id/Cell1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"/>
<TextView android:id="@+id/Cell2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="7"/>
<TextView android:id="@+id/Cell3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="6"/>
</LinearLayout>