Android环境
GridView等场景,指定每行个数、行数,SquareLinearLayout就会自适应填满GridView
[1].[代码] 正方形 跳至 [1] [2] [3]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public
class
SquareLinearLayout
extends
LinearLayout {
public
SquareLinearLayout(Context context) {
super
(context);
}
public
SquareLinearLayout(Context context, AttributeSet attrs) {
super
(context, attrs);
}
@Override
public
void
onMeasure(
int
widthMeasureSpec,
int
heightMeasureSpec) {
super
.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
}
|
[2].[代码] 自定义高宽比 跳至 [1] [2] [3]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public
class
SquareLinearLayout
extends
LinearLayout {
public
SquareLinearLayout(Context context) {
super
(context);
}
public
SquareLinearLayout(Context context, AttributeSet attrs) {
super
(context, attrs);
}
@Override
public
void
onMeasure(
int
widthMeasureSpec,
int
heightMeasureSpec) {
int
width = MeasureSpec.getSize(widthMeasureSpec);
int
height = Math.round(width*
0
.9f);
int
mode = MeasureSpec.getMode(widthMeasureSpec);
super
.onMeasure(MeasureSpec.makeMeasureSpec(width, mode), MeasureSpec.makeMeasureSpec(height, mode));
}
}
|
[3].[代码] girdview_item.xml 跳至 [1] [2] [3]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
com.custom.SquareLinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
android:gravity
=
"center"
android:orientation
=
"vertical"
>
<
LinearLayout
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
android:gravity
=
"center"
android:orientation
=
"vertical"
>
<
TextView
android:id
=
"@+id/name"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:textColor
=
"@android:color/black"
/>
<
ImageView
android:id
=
"@+id/icon"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
/>
</
LinearLayout
>
</
com.custom.SquareLinearLayout
>
|