如何填充LinearLayout行?

时间:2013-11-30 22:05:45

标签: android

我使用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>

2 个答案:

答案 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>