Ree*_*rse 90 android android-drawable android-shape
是否可以仅在某些方面创建具有笔划的Android形状对象?
我有:
<stroke
android:width="3dip"
android:color="#000000"
android:dashWidth="10dip"
android:dashGap="6dip" />
Run Code Online (Sandbox Code Playgroud)
这与CSS类似:
border: 3px dashed black;
Run Code Online (Sandbox Code Playgroud)
如何在一侧设置笔划?我就是这样在CSS中做的:
border-left: 3px dashed black;
Run Code Online (Sandbox Code Playgroud)
你是如何在Android XML中做到这一点的?
hta*_*oya 120
我用这个实现了一个很好的解决方案:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item android:top="-1dp" android:right="-1dp" android:left="-1dp">
<shape>
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="#ffffff" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
如果你需要一个透明的背景但仍然是一个开放的笔触颜色(在我的情况下我只需要一个底线)这很好.如果您需要背景颜色,可以添加纯色形状,如Maragues的答案.
编辑1
有时,对于高密度设备,使用低倾角值可能会以非常薄或不可见的笔划或距离结束.设置ListView分隔符时也可能发生这种情况.
最简单的解决方法是使用1px而不是1dp的距离.这将使线在所有密度下始终可见.最佳解决方案是为每个密度创建尺寸资源,以获得每个设备的最佳尺寸.
编辑2
很有趣,但是我在6年后尝试使用它,我无法在Lollipop设备上获得好结果.
可能目前的解决方案是使用9补丁.Android应该已经为这个问题提供了一个简单的解决方案.
Mar*_*ues 40
我通过使用列表层解决了这个问题,结合了两个形状,其中一个形状的高度为1dp放在底部
optionscreen_bottomrectangle.xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item>
<shape>
<solid android:color="#535353" />
</shape>
</item>
<!-- This is the main color -->
<item android:bottom="1dp">
<shape>
<solid android:color="#252525" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
然后,在layout/main.xml文件中
<TextView
android:id="@+id/bottom_rectangle"
android:background="@drawable/optionscreen_bottomrectangle"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_below="@id/table_options"
android:layout_above="@id/exit_bar"/>
Run Code Online (Sandbox Code Playgroud)
这填补了table_options和exit_bar之间的差距,并且在exit_bar打印1dp行之前.这对我有用,我希望它可以帮助别人.
编辑答案以按正确的顺序放置图层.谢谢亚历克斯!
Nir*_*ara 40
我知道这个问题很久以前就已经发布了,所以发布这个问题的人不会使用答案,但它仍然可以帮助其他人.
<?xml version="1.0" encoding="UTF-8"?>
<!-- inset is used to remove border from top, it can remove border from any other side-->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetTop="-2dp"
>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rectangle">
<stroke android:width="1dp" android:color="#b7b7b7" />
<corners android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp"/>
<solid android:color="#454444"/>
</shape>
</inset>
Run Code Online (Sandbox Code Playgroud)
使用inset标记并为要删除的边框指定负值.
可能的值是:
android:insetTop="-1dp"
android:insetBottom="-1dp"
android:insetLeft="-1dp"
android:insetRight="-1dp"
ug_*_*ug_ 30
另一种使用填充的其他响应.这个小小的snipplet在顶部和底部形成边框.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item>
<shape>
<padding android:left="0dp" android:top="1dp" android:right="0dp" android:bottom="1dp"/>
<solid android:color="#898989" />
</shape>
</item>
<!-- This is the main color -->
<item>
<shape>
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
Ale*_*lav 26
@ Maragues的回答是倒退的,因为图层列表drawables从上到下绘制(意味着列表中的最后一项是在顶部绘制的):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
<item>
<shape>
<solid android:color="#535353" />
</shape>
</item>
<!-- This is the main color -->
<item android:bottom="1dp">
<shape>
<solid android:color="#252525" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
这将有效地填充线条颜色的形状,然后在其上绘制背景颜色,留下最后1dp清晰的线条颜色显示.
| 归档时间: |
|
| 查看次数: |
50921 次 |
| 最近记录: |