【问题标题】:How to draw a layout of this type in android?如何在android中绘制这种类型的布局?
【发布时间】:2011-09-22 06:10:52
【问题描述】:

我想为布局提供一个类似于图中所示的背景可绘制对象。我如何使用可绘制的 xml 来做到这一点?请提出一个合适的方法来解决这个问题。

【问题讨论】:

标签: android android-layout android-widget


【解决方案1】:

使用单个 xml 可绘制对象是不可能做到这一点的,但可能你可以使用两个来创建这种效果。我会这样做

  1. 创建一个带有黑色边框的方形可绘制对象
  2. 创建一个可绘制的剪辑并剪辑方形可绘制的底部。

参考这里

http://developer.android.com/guide/topics/resources/drawable-resource.html#Clip

您可以使用 android:gravity="top" 然后以编程方式设置级别以显示 90%(或更多)的图像

ImageView imageview = (ImageView) findViewById(R.id.image);
ClipDrawable drawable = (ClipDrawable) imageview.getDrawable();
drawable.setLevel(drawable.getLevel() + 9500);

【讨论】:

  • 感谢 rahul 的快速回复。我正在使用您建议的方法。我尝试使用 android:gravity=["top" | “对” | "left" ] 在剪辑可绘制文档中给出。但是这种语法在我的 xml 文件中给了我错误。但是,当我使用单个属性 android:gravity="top" 它工作正常,只有顶行是可见的。请帮我解决这个问题?
  • 我已经更新了我的答案,您需要以编程方式设置级别。我想知道为什么这不能是 xml 文件中的另一个属性:-?
  • 正是我想要的。谢谢:)
【解决方案2】:

我知道这是 4 年多之后的事,但对于其他想要达到相同结果的人来说,有一个非常简单的方法可以通过创建 layer-list xml drawable 来实现这一目标。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape>
            <padding
                android:top="5dp"
                android:left="5dp"
                android:right="5dp" />
            <solid
                android:color="@android:color/black" />
        </shape>
    </item>

    <item>
        <shape>
            <solid
                android:color="@android:color/white" />
        </shape>
    </item>

</layer-list>

将此保存到项目的 drawable 文件夹并像引用任何其他可绘制对象一样引用它(android:src / android:background,或以编程方式)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多