自定义网格布局列边框
Custom Grid Layout column border
我有一个问题。
如何在我的 xml 文件中创建自定义双侧边框?
我尝试使用自定义可绘制对象的各种变体,但最终没有得到我需要的结果。
有什么想法吗?在 2x2 网格示例中,它有效。但是,我想要一个 3x4 网格。
目前,我有这个布局文件:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
tools:background="@color/colorLightBlue">
<Button
android:id="@+id/btn_pass_code_1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="1"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_2"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="2"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_3"
android:layout_columnWeight="0"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="3"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_4"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="4"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_5"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="5"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_6"
android:layout_columnWeight="1"
android:background="@color/colorTransparent"
android:layout_gravity="fill"
android:text="6"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:id="@+id/btn_pass_code_7"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:text="7"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:id="@+id/btn_pass_code_8"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:text="8"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:id="@+id/btn_pass_code_9"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:text="9"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:id="@+id/btn_pass_code_0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:text="0"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_delete"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:background="@drawable/input_delete"
android:textColor="@color/colorWhite"
android:textSize="22sp" />
</GridLayout>
您可以将其用作按钮的背景:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Change top, bottom, left and right values to change the borders
as you like, this configuration is for top/left border-->
<item android:top="-1dp" android:left="-1dp">
<shape android:shape="rectangle">
<stroke
android:width="1dip"
android:color="@android:color/holo_blue_bright" />
</shape>
</item>
</layer-list>
您必须根据按钮在网格中的位置更改边框才能获得所需的结果。您必须创建从蓝色到白色的渐变才能重现预期结果(如您引用的第一张图片)。
我有一个问题。 如何在我的 xml 文件中创建自定义双侧边框?
我尝试使用自定义可绘制对象的各种变体,但最终没有得到我需要的结果。
有什么想法吗?在 2x2 网格示例中,它有效。但是,我想要一个 3x4 网格。
目前,我有这个布局文件:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
tools:background="@color/colorLightBlue">
<Button
android:id="@+id/btn_pass_code_1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="1"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_2"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="2"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_3"
android:layout_columnWeight="0"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="3"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_4"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="4"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_5"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:background="@color/colorTransparent"
android:text="5"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_6"
android:layout_columnWeight="1"
android:background="@color/colorTransparent"
android:layout_gravity="fill"
android:text="6"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:id="@+id/btn_pass_code_7"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:text="7"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:id="@+id/btn_pass_code_8"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:text="8"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:id="@+id/btn_pass_code_9"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:text="9"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:background="@color/colorTransparent"
android:id="@+id/btn_pass_code_0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:text="0"
android:textColor="@color/colorWhite"
android:textSize="26sp" />
<Button
android:id="@+id/btn_pass_code_delete"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center"
android:background="@drawable/input_delete"
android:textColor="@color/colorWhite"
android:textSize="22sp" />
</GridLayout>
您可以将其用作按钮的背景:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Change top, bottom, left and right values to change the borders
as you like, this configuration is for top/left border-->
<item android:top="-1dp" android:left="-1dp">
<shape android:shape="rectangle">
<stroke
android:width="1dip"
android:color="@android:color/holo_blue_bright" />
</shape>
</item>
</layer-list>
您必须根据按钮在网格中的位置更改边框才能获得所需的结果。您必须创建从蓝色到白色的渐变才能重现预期结果(如您引用的第一张图片)。