SquareLinearLayout(高等于宽的自适应LinearLayout)

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>

时间: 2024-12-06 22:58:41

SquareLinearLayout(高等于宽的自适应LinearLayout)的相关文章

三栏布局(二)-------上下宽高固定,中间自适应

上一篇写的是左右宽高固定,中间自适应,根据上一篇的内容,总结了下上下宽高固定,中间自适应的几种布局方式,话不多说,直接上代码. <!DOCTYPE html> <html> <head> <title>上中下三栏布局</title> <style type="text/css"> html * { padding: 0; margin: 0; } html, body{ height:100%; } .layout

三栏布局(二)——上下宽高固定,中间自适应

上下宽高固定,中间自适应的几种布局方式, 有4种布局方式:   position;   flex;    table;   grid. <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>上下固定,中间自适应</title> </head> <style type="text/css"> html *

CSS左侧固定宽 右侧自适应(兼容所有浏览器)

左侧固定宽,右侧自适应屏幕宽: 左右两列,等高布局: 左右两列要求有最小高度,例如:200px;(当内容超出200时,会自动以等高的方式增高) 要求不用JS或CSS行为实现: 仔细分析试题要求,要达到效果其实也并不是太难,只是给人感觉像有点蛋疼的问题一样.但是你仔细看后你会觉得不是那么回事: 左边固定,右边自适应布局,这个第一点应该来说是非常的容易,实现的方法也是相当的多,那么就可以说第一条要求已不是什么要求了: 左右两列等高布局,这一点相对来说要复杂一些,不过你要是了解了怎么实现等高布局,那么

布局之不定宽与自适应

不定宽:指可设置任意宽度,或宽度有内容决定. 自适应:无论其他元素怎么变,它都不用改. 命题:设置不定宽与自适应 <div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> <

两列布局中单列定宽单列自适应布局的5种思路

× 目录 [1]float [2]inline-block [3]table[4]absolute[5]flex 前面的话 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.本文将从float.inline-block.table.absolute和flex这五种思路来详细说明如何巧妙地实现布局 思路一: float 说起两列布局,最常见的就是使用float来实现.float浮动布局的缺点是浮动后会造成文本环绕等效果,以及需要及时清除浮动.如果各浮动元素的高度不同时,可能会出犬牙交错

左边定宽 右边自适应的写法

<html><head> <title>左边定宽 右边自适应</title> <meta charset="utf-8"> <style type="text/css"> .left{float: left;width: 200px;margin-right: -100%} .content{float: left;width: 100%;} .contentInside{margin-left

js获取网页屏高 屏宽

<SCRIPT LANGUAGE="JavaScript"> <!-- //document.body.scrollTop 滚动条的上端距离 //document.body.scrollLeft 滚动条的左端距离 window.onload = function() { var s = ""; s += " 网页可见区域宽:"+ document.body.clientWidth; s += " 网页可见区域高:&qu

当前窗口的高和宽

在javascript中得到当前窗口的高和宽  <body><SCRIPT  LANGUAGE="JavaScript">  var    s  =  "网页可见区域宽:"+  document.body.clientWidth;  s  +=  "\r\n网页可见区域高:"+  document.body.clientHeight;  s  +=  "\r\n网页可见区域高:"+  document.

css 两列布局中单列定宽单列自适应布局的6种思路

前面的话 说起自适应布局方式,单列定宽单列自适应布局是最基本的布局形式.本文将从float.inline-block.table.absolute.flex和grid这六种思路来详细说明如何巧妙地实现布局 float [思路一]float 说起两列布局,最常见的就是使用float来实现.float浮动布局的缺点是浮动后会造成文本环绕等效果,以及需要及时清除浮动.如果各浮动元素的高度不同时,可能会出犬牙交错的效果 [1]float + margin 将定宽的一列使用float,而自适应的一列使用计