android shape中的line可以用來畫分割線租幕,有時(shí)分割線需要設(shè)成虛線形式,比如這種
可點(diǎn)擊圖片查看大圖
于是我們?nèi)ゾW(wǎng)上查資料拧簸,大部分都這樣說:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line">
<!-- 形狀的高度-->
<size android:height="3dp" />
<!-- 實(shí)際顯示的線 -->
<stroke android:color="@color/grayddd"
android:dashGap="1dp"
android:width="1dp"
android:dashWidth="2dp" />
</shape>
這個(gè)是沒問題的劲绪,其中:
- 只能畫水平線,畫不了豎線狡恬;
- 線的高度是通過
stroke
的android:width
屬性設(shè)置的珠叔; size
的android:height
屬性定義的是整個(gè)形狀區(qū)域的高度蝎宇;- **
size
的height
必須大于stroke
的width
弟劲,否則,線無法顯示姥芥; ** - 線在整個(gè)形狀區(qū)域中是居中顯示的兔乞;
- 線左右兩邊會(huì)留有空白間距,線越粗凉唐,空白越大庸追;
- 引用虛線的view需要添加屬性
android:layerType
,值設(shè)為software
台囱,否則顯示不了虛線淡溯。
很多人不注意,容易掉進(jìn)第四條和最后一條的坑里簿训,size
的height
相當(dāng)于畫布咱娶,stoke
的width
相當(dāng)于畫筆,畫布的尺寸小于等于畫筆的尺寸都不得行强品。最后一條也很重要膘侮,不過只要大家搜索最新的資料一般都會(huì)提示注意,android中大坑不犯的榛,小坑不斷琼了,多小心謹(jǐn)慎為好。
當(dāng)然這些都設(shè)置好了夫晌,也不一定能顯示雕薪,因?yàn)檫€有一道坑要踩,那就是在布局里使用的時(shí)候晓淀,比如所袁,我犯的這個(gè)錯(cuò)誤:
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginBottom="12dp"
android:layout_marginTop="12dp"
android:background="@drawable/gray_dash_line"
android:layerType="software"/>```
乍一看沒什么問題,該設(shè)置的都設(shè)置了要糊,但實(shí)際上就是不顯示纲熏,一開始以為是要開啟硬件加速妆丘,但是試了之后還是不行,最后仔細(xì)看才發(fā)現(xiàn)還是高度的問題局劲,就是剛才虛線的`stoke`的`width`為1dp勺拣,但這里`android:layout_height="1dp" `就回到剛才的問題了,布局中的高度限制了drawable的高度鱼填,更嚴(yán)格上講是限制了drawable中“畫布”的高度药有,所以,可想而知了苹丸。
---------
這篇主要記述自己踩的坑愤惰,加深一下記憶,省的以后忘了赘理,免得下次遇到這種問題又得重搞宦言。