Android實現正方形View

2021-07-11 01:53:46 字數 1720 閱讀 7741

我們在開發的時候,是不是有這樣的需求呢? 

1.***layout是個正方形; 

2.***view是個正方形; 

我們下面就以具體的情景來做一次簡單的開發來滿足我們的需求

建立乙個relativelayout,滿足高度等於寬度,寬度是填充父容器,這樣來滿足我們不論在何種螢幕尺寸下面,都能很好的適配,下面貼**

我們先自定義乙個 class squarerelativelayout extends relativelayout
public class

squarerelativelayout

extends

relativelayout

public squarerelativelayout(context context, attributeset attrs)

public squarerelativelayout(context context, attributeset attrs, int defstyleattr)

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

}

這裡其實我只是簡單的重寫了onmeasure()方法,要求是高度要等於寬度,所以我們就直接在呼叫父類的onmeasure()方法時把寬度的測量空間直接傳值給了高度的測量空間引數

效果圖1(寬度=」match_parent」,高度就算我們在布局時寫0dp,照樣可以使高度等於寬度):

效果圖2(寬度=」100dp」,高度就算我們在布局時寫500dp,照樣可以使高度等於寬度):

建立乙個imageview,滿足寬度等於高度,下面貼**

public class

squareimageview

extends

imageview

public squareimageview(context context, attributeset attrs)

public squareimageview(context context, attributeset attrs, int defstyleattr)

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

}

關鍵**

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
把高度測量空間傳給寬度測量空間

效果圖:

ps:實現正方形控制項就這麼簡單,如果我們想實現固定比例控制項,也是同樣的思路,重寫onmeasure()方法,然後在此方法中實現邏輯**

recyclerview 實現正方形網格效果

然後就是按慣例寫item布局 一切就緒,真機跑起來,我用的一台的nexus4測試,下面是顯示效果 仔細想想,item布局的寬度是你指定recycleview列數以後確定下來,高度在onmeasue方法裡計算出來,如果想要實現效果圖那樣矩形的效果,自然需要寬高一樣。有了思路以後,只需要把item布局的...

css實現正方形div的3種方式

1.css3 vw 單位 1vw 1 viewport width hello,viewport vw 實測不管用 chrome,版本 49.0.2623.110 2.padding bottom placeholder 這個確實管用,但是沒有辦法在裡面寫字了 3,padding bottom af...

正方形等分計數總正方形數

如下圖正方形,邊長是1cm,每邊被四等分,求一共分出了多少個正方形。經過手工數 邊長為1 4的正方形 16 邊長為1 2的正方形 9 邊長為3 4的正方形 4 邊長為1的正方形 1 所以一共是 30個正方形。當上述的正方形,邊長被3等分的情況又如何 還是手動數 邊長為1 3的正方形 9 邊長為2 3...