【问题标题】:How is a bottom line added with this layer-list drawable?这个图层列表drawable是如何添加底线的?
【发布时间】:2019-04-30 17:17:20
【问题描述】:

我想在视图中有一个底线。以下drawable以某种方式添加了底部边框:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape
                android:shape="rectangle">
            <!-- Set the border color of your layout here -->
            <solid android:color="@color/red" />

        </shape>
    </item>

    <!-- This is for border bottom but
    you can change this according to your need -->
    <item android:bottom="2dp" >
        <shape
                android:shape="rectangle">
            <!-- Set the background color of your layout here -->
            <solid android:color="@color/green" />
        </shape>
    </item>

</layer-list>  

这样的结果是:

问题
1)我根本不明白这是如何工作的。似乎这是使用边距获得红色底边框的一些技巧,但我真的不明白。
2)我需要能够添加底部边框,但我不想为整个视图设置任何特定的背景颜色。这可能吗?

【问题讨论】:

    标签: android android-layout android-view android-drawable layer-list


    【解决方案1】:

    这是告诉系统从哪里开始这个项目布局。 因为这里我们有底部 2dp,所以这个布局从底部开始 2dp。 将bottom to end、start或其他选项更改为更多理解。

    【讨论】:

    • where to start this item 是什么意思?
    • 但是bottom 是在颜色green 的定义中,它占据了整个视图
    • 该布局从下到上开始,将 2dp 留在底部,并且正在绘制红色的布局,因此红色仅在底部 2dp 中可见
    • 绘图是从下往上开始的吗?还是在第一个矩形上绘制的第二个矩形在底部有2dp 填充,这样我们只能看到第一个矩形的 2 dp?我找不到这种行为记录在哪里
    • 尝试将标签更改为结束,开始。我找到了这个解决方案。不知道文档。
    【解决方案2】:

    对于 2) 我需要能够添加底部边框,但我不想为整个视图设置任何特定的背景颜色。这可能吗?

    用下面的代码替换你的drawable:

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="-2dp"
        android:right="-2dp"
        android:top="-2dp">
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
            <!--Uncomment this if you wnat to set any background color to 
        your rectangle
    <solid android:color="#ffffff" />-->
    
            <stroke
                android:width="1dp"
                android:color="@color/red" />
        </shape>
    </item>
    

    【讨论】:

    • 如果我删除&lt;solid android:color...,那么整个视图就会变成红色
    • 如果你不希望视图有颜色,你可以设置它&lt;solid android:color="#ffffff" /&gt;
    • 那是白色的。如果我设置@android:color/transparent,一切都会变成红色
    • @Jim,我已经更新了我的代码,请使用上面的drawable
    • 您能解释一下这是如何工作的吗?负dps有什么用?
    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    相关资源
    最近更新 更多