如何动态定义LinearLayout中的列和行?

时间:2013-06-20 14:53:01

标签: android-layout

我试图动态创建这个XML:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:columnCount="2"
    android:rowCount="2"
    android:orientation="vertical"    >

    <LinearLayout 
        android:id="@+id/topleft"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_column="0"
        android:layout_row="0"         
            >

        <ImageView
            android:id="@+id/myimage1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                      
            android:src="@drawable/tetona"          
              />      

     ></LinearLayout>

      <LinearLayout 
        android:id="@+id/topRigth"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_column="1"
        android:layout_row="0"  
        >        
        <ImageView
            android:id="@+id/myimage2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                      
            android:src="@drawable/tetona" />                    
     ></LinearLayout>

      <LinearLayout 
        android:id="@+id/bottomRight"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_column="1"
        android:layout_row="1"  
        >        
        <ImageView
            android:id="@+id/myimage3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                      
            android:src="@drawable/tetona" />                    
     ></LinearLayout>

      <LinearLayout 
        android:id="@+id/BottonLeft"
        android:layout_width="160dp"
        android:layout_height="200dp"
        android:layout_column="0"
        android:layout_row="1"  
        >        
        <ImageView
            android:id="@+id/myimage4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"                      
            android:src="@drawable/tetona" />                    
     ></LinearLayout>

</GridLayout>

我可以在循环中创建LinearLayouts,例如:

GridLayout gridlay = (GridLayout)findViewById(R.id.gridpadre);
gridlay.setColumnCount(2);
gridlay.setRowCount(2);

for (int i=0; i<(gridlay.getRowCount()); ++i){
    for(int j=0; j<gridlay.getColumnCount(); ++j){          

        LinearLayout layout = new LinearLayout(this);   
        layout.setId(id);   
        layout.setLayoutParams(new LinearLayout.LayoutParams(160,200)); 
        gridlay.addView(layout);

但是......我怎样才能动态设置LinearLayout android:layout_column="i"android:layout_row="j"以便将它放在相对于gridlayout的位置i和j? 可能吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试执行以下操作:layout.setOrientation(VERTICAL);然后尝试layout.setHorizontalGravity(j),因为我没有配备任何测试方法的计算机我不确定它是否可行,但它值得一试。