实现Android GridLayout背景颜色中间有白色间隔

一、流程概述

我们需要使用GridLayout来实现一个背景颜色中间有白色间隔的效果。具体实现步骤如下:

erDiagram
    实现效果 --> 使用GridLayout
    使用GridLayout --> 设置背景颜色
    设置背景颜色 --> 添加白色间隔

二、具体步骤

1. 使用GridLayout

在XML布局文件中添加GridLayout:

<GridLayout
    android:id="@+id/gridLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="3"
    android:background="@color/colorPrimary"
    android:padding="5dp"
    android:rowCount="3"/>

2. 设置背景颜色

在res/values/colors.xml中定义颜色:

<color name="colorPrimary">#FF4081</color>
<color name="white">#FFFFFF</color>

3. 添加白色间隔

在Activity中动态添加View,设置白色背景:

public class MainActivity extends AppCompatActivity {

    private GridLayout gridLayout;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        gridLayout = findViewById(R.id.gridLayout);
        
        for (int i = 0; i < 9; i++) {
            TextView textView = new TextView(this);
            textView.setText("Cell " + i);
            textView.setBackgroundColor(getResources().getColor(R.color.white));
            textView.setGravity(Gravity.CENTER);
            
            GridLayout.LayoutParams params = new GridLayout.LayoutParams();
            params.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f);
            params.rowSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f);

            textView.setLayoutParams(params);
            gridLayout.addView(textView);
        }
    }
}

三、关键代码解析

  • android:background="@color/colorPrimary":在GridLayout中设置背景颜色为colorPrimary。
  • textView.setBackgroundColor(getResources().getColor(R.color.white)):设置TextView的背景颜色为白色。
  • params.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f):设置每个TextView跨越一个网格列。
  • params.rowSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f):设置每个TextView跨越一个网格行。

四、类图

classDiagram
    MainActivity -- GridLayout

通过以上步骤,你可以实现一个Android GridLayout背景颜色中间有白色间隔的效果。希望这篇文章能帮助你理解并掌握这个技术。如果有任何问题,欢迎随时向我咨询。加油!