我想为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);
}
我正在为一个机器列执行一个程序列表示该机器的工作日期,行代表该机器的工作时数。因为这样我必须从开始时间到结束时刻拉出一个按钮但我可以'这是我的问题。
答案 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);
}