TableLayout中怎么填充相同的布局

在Android界面xml文件中可以导入另一个xml文件,就能实现一个功能就是重复利用相同的xml布局

有两种方法进行处理:

include引入

定义一个布局Tab_flag.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="160dp"

    android:gravity="center_vertical"

    android:maxHeight="160dp" >



    <ImageButton

        android:id="@+id/weather_search"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:background="@drawable/index_btn"

        android:src="@drawable/j5" />



    <View

        android:id="@+id/items_divider_h"

        android:layout_width="match_parent"

        android:layout_height="1dp"

        android:layout_alignParentBottom="true"

        android:background="#929292" />



    <View

        android:id="@+id/items_divider_v"

        android:layout_width="1dp"

        android:layout_height="match_parent"

        android:layout_alignParentRight="true"

        android:layout_centerVertical="true"

        android:background="#929292" />



</RelativeLayout>

在另一个布局中引用这个布局

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/init_table"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:stretchColumns="*" >



    <TableRow>



        <include

            android:id="@+id/button1"

            android:layout_height="160dp"

            android:layout_gravity="center"

            layout="@layout/tableitemview" />



        <include

            android:id="@+id/button2"

            android:layout_height="160dp"

            android:layout_gravity="center"

            layout="@layout/tableitemview" />



        <include

            android:id="@+id/button3"

            android:layout_height="160dp"

            android:layout_gravity="center"

            layout="@layout/tableitemview" />

    </TableRow>



    <TableRow>

        <include

            android:layout_height="160dp"

            android:layout_gravity="center"

            layout="@layout/tableitemview" />



        <include

            android:layout_height="160dp"

            android:layout_gravity="center"

            layout="@layout/tableitemview" />



        <include

            android:layout_height="160dp"

            android:layout_gravity="center"

            layout="@layout/tableitemview" />

    </TableRow>



</TableLayout>

其中,

android:stretchColumns="*" 
stretchColumns是自适应宽度的属性,如果属性值为“*”则所有的空间都是自适应宽度,如果为“1”是设置TableLayout所有行的第二列为扩展列。也就是说如果没行都是三列的话,剩余的空间由第二列不齐。 

<!-- include标签内不能设置RelativeLayout属性,如android:layout_alignParentBottom,因为不起作用 -->   
<!-- include标签内设置id属性后(android:id),其引用的布局layout内的id属性就不起作用了,怀疑是其引用的layout外层包裹了一层include标签或者是覆盖了其内的属性id-->   
<!-- 如果没有include标签,所有布局代码都写在一个xml文件中,界面会显得很冗余,可读性很差。而且界面加载的时候是按照顺序加载的,前面的布局不能调用其后面的布局id。而采用include后,一个include中可以引用其后的include中的布局id属性 -->

merage引入

<LinearLayout  

   android:layout_width="100px"

   android:layout_height="wrap_content"> 

  <include layout="@layout/anotherlayout"/>

</LinearLayout>



<?xml version="1.0" encoding="utf-8"?>

<merge xmlns:android="http://schemas.android.com/apk/res/android" > 

  <Button android:id = "@+id/btn"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="按钮"/>

</merge>

 

这里还是没有解决一个问题,怎么样自定义相同布局中的不同内容呢?

当然是在java中写了。

 

你可能感兴趣的:(tablelayout)