Android:如何进行垂直合并?

时间:2014-07-16 09:38:45

标签: android android-layout android-activity android-fragments android-linearlayout

我想为android制作一个应用程序。这个应用程序需要7行和7个像7 * 7矩阵的颜色。这是一个问题如何将单元格1 * 1与2 * 1或1 * 1,2合并* 1和3 * 1垂直?我也可以动态制作吗?我应该使用哪种布局?

提前谢谢你。

这里是screen.xml

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="8"
android:orientation="horizontal"
android:rowCount="9" >


<Space
    android:layout_column="0"
    android:layout_columnSpan="1"
    android:layout_gravity="fill"
    android:layout_row="0" 
    android:tag=""/>

<TextView
    android:id="@+id/Monday"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="1"
    android:layout_gravity="center"
    android:layout_row="0"
    android:text="Monday"
    android:textSize="10dp" 
    android:tag="Monday"
    />



<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="2"
    android:layout_gravity="center"
    android:layout_row="0"
    android:text="Tuesday"
    android:textSize="10dp" 
    android:tag="Tuesday"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="3"
    android:layout_gravity="center"
    android:layout_row="0"
    android:text="Wednesd."
    android:textSize="10dp" 
    android:tag="Wednesday"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="4"
    android:layout_gravity="center"
    android:layout_row="0"
    android:text="Thursday"
    android:textSize="10dp" 
    android:tag="Thursday"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="5"
    android:layout_gravity="center"
    android:layout_row="0"
    android:text="Friday"
    android:textSize="10dp" 
    android:tag="Friday"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="6"
    android:layout_gravity="center"
    android:layout_row="0"
    android:text="Saturday"
    android:textSize="10dp" 
    android:tag="Saturday"/>

<Space
    android:layout_column="0"
    android:layout_columnSpan="1"
    android:layout_gravity="fill"
    android:layout_row="0" 
    android:tag=""/>

<TextView
    android:id="@+id/eight"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_gravity="center"
    android:layout_row="1"
    android:text="8:00"
    android:textSize="10dp" 
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:layout_row="2"
    android:text="8:30"
    android:textSize="10dp" 
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:layout_row="3"
    android:text="9:00"
    android:textSize="10dp" 
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:layout_row="4"
    android:text="9:30"
    android:textSize="10dp" 
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:layout_row="5"
    android:text="10:00"
    android:textSize="10dp" 
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:layout_row="6"
    android:text="10:30"
    android:textSize="10dp" 
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:layout_row="7"
    android:text="11:00"
    android:textSize="10dp" 
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_gravity="center"
    android:layout_margin="5dp"
    android:layout_row="8"
    android:text="11:30"
    android:textSize="10dp" 
    />

这里是mainActivity

public class Example extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.screen);

    Button lec = new Button(this);
    GridLayout gridLayout = (GridLayout)findViewById(R.id.grid);
    GridLayout.LayoutParams params = new GridLayout.LayoutParams();
    params.width = GridLayout.LayoutParams.MATCH_PARENT;
    params.height = GridLayout.LayoutParams.WRAP_CONTENT;
    params.columnSpec = GridLayout.spec(1, 3);
    params.rowSpec = GridLayout.spec(1, 7);



    gridLayout.addView(lec, params);

}

我正在为一个机器列执行一个程序列表示该机器的工作日期,行代表该机器的工作时数。因为这样我必须从开始时间到结束时刻拉出一个按钮但我可以'这是我的问题。

1 个答案:

答案 0 :(得分:3)

使用GridLayout!它的工作原理如下:

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_row="1"
        android:layout_columnSpan="2"
        android:layout_rowSpan="2" />

    ...

</GridLayout>

要定义GridLayout上使用这两个属性的行数和列数:

  • android:columnCount
  • android:rowCount

您可以使用以下两个属性在GridLayout中定义View的位置:

  • android:layout_column
  • android:layout_row

您可以定义View跨越这两个属性的行数或列数:

  • android:layout_rowSpan
  • android:layout_columnSpan

请注意,GridLayout仅添加了API级别14!如果要在早期版本中使用GridLayout,则需要使用支持库中的GridLayout:

<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    ...    

</android.support.v7.widget.GridLayout>

您还可以使用GridLayout以编程方式填充LayoutParams,如下所示:

final int row = 1;  // View starts in second row
final int rowSpan = 2; // View spans two rows

final int column = 1; // View starts in second column
final int columnSpan = 2; // View spans two columns

// Creating the LayoutParams from the values above
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.width = GridLayout.LayoutParams.WRAP_CONTENT;
params.height = GridLayout.LayoutParams.WRAP_CONTENT;
params.columnSpec = GridLayout.spec(column, columnSpan);
params.rowSpec = GridLayout.spec(row, rowSpan);

// Adding the new View with the LayoutParams
gridLayout.addView(view, params);

我建议你添加一个帮助方法来简化这个:

private void addViewToGridLayout(View view, int row, int column, int rowSpan, int columnSpan) {
    GridLayout.LayoutParams params = new GridLayout.LayoutParams();
    params.width = GridLayout.LayoutParams.WRAP_CONTENT;
    params.height = GridLayout.LayoutParams.WRAP_CONTENT;
    params.columnSpec = GridLayout.spec(column, columnSpan);
    params.rowSpec = GridLayout.spec(row, rowSpan);

    gridLayout.addView(view, params);
}