标签: layer-list

使用Layer-List中的XML更改布局的边距

我尝试了几个选项,但我找不到最好的方法:我想在使用XML单击按钮时更改线性布局的边距.这是我选择按钮的代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:bottom="-1dp">
        <shape android:shape="rectangle" >
            <corners
                android:topLeftRadius="5dp"
                android:topRightRadius="5dp" />

            <solid android:color="#424346" />

            <stroke
                android:width="1dp"
                android:color="#2d2e2f" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

现在我想添加保证金的更改,如果放在一个单独的文件中将如下所示:

<resources>
    <style android:id="@+id/tab_label" >
        <item android:layout_marginTop="7dp"/>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

我尝试将它作为项添加到图层列表但它返回错误.

将它放在另一个文件中是非常有问题的,因为Android不允许在一个元素中使用两种样式.所以我想在一个XML文件中合并这两件事.

或者,这样做的最佳方法是什么?

xml layout android margin layer-list

5
推荐指数
1
解决办法
2万
查看次数

如何从缩放中防止android层可绘制形状(例如圆圈)

我尝试使用XML layer-list drawable创建一个简单的插图.
我有两个形状,一个圆形和一个矩形
我想要一个不按比例的圆圈.
以下是布局:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

    <ImageView
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/shape5"
        android:layout_gravity="center"
        android:scaleType="center"
        />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是shape5.xml drawable

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:top="0dp" android:left="0dp">
        <shape android:shape="rectangle" android:scaleType="center">
            <stroke android:width="2dp" android:color="@android:color/holo_red_light" />
            <size android:width="200dp" android:height="100dp"/>
        </shape>
    </item>

    <item android:top="10dp" android:left="10dp">
        <shape android:shape="oval" android:gravity="center" android:scaleType="center" >
            <stroke android:width="2dp" android:color="@android:color/holo_blue_light" />
            <corners android:radius="10dp" />
            <size android:width="20dp" android:height="20dp"/>

        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

生成的图形如下所示:

渲染活动的屏幕截图

很明显,项目android:top可以完成工作,但没有什么能阻止形状缩放.大小宽度不起作用,android:scaleType ="center"也不起作用.

我快速查看了LayerDrawable.java实现.看起来像在幕后,从项目属性创建插入.所以我想通过计算那些我可以达到结果,我想要的.这是唯一的方法吗?

更新:

根据这个答案,我知道操纵项目的android:top,android:left等,我可以创建一个虚拟插图,可以根据我的需要扩展我的"形状".我查了一遍,这是对的.所以这是一个解决方法.然而,我对它的反直觉感到非常失望.我仍然希望有人能指出我一种简单的方法来禁用缩放.

更新:根据此Google Android文档页面,设置ImageView scaleType应该已禁止缩放.显然在我的情况下,它没有用.缺了点什么.

xml android shape xml-drawable layer-list

5
推荐指数
1
解决办法
5112
查看次数

阴影般的drawable,使用"layer-list"

背景

我试图在视图下面制作一个(假)阴影,这样层就会以这种方式垂直:

  • 一行颜色"#43000000",高度为"1dp"
  • 在线下方,一个渐变,从顶部开始,颜色为"#1A000000",以颜色"#00000000"结束,高度为"8dp".

问题

出于某种原因,我无法正确绘制线条.

无论我做什么,由于某种原因,线条占据整个空间,而渐变似乎很好.

我尝试了什么

我尝试使用"line"作为形状和"矩形".我也尝试使用"笔画"而不是"实心",尝试添加填充和边距......

这是可绘制文件的XML:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle" >
            <size android:height="1dp" />

            <solid android:color="#43000000" />
        </shape>
    </item>
    <item android:top="1dp">
        <shape android:shape="rectangle" >
            <gradient
                android:angle="270"
                android:endColor="#00000000"
                android:startColor="#1A000000" />

            <size android:height="8dp" />
        </shape>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

同样,这不是我尝试过的唯一一件事.这只是我的第一次尝试.

这个问题

我该如何修复这个XML?是什么导致它发生?

android gradient layer-list android-drawable

5
推荐指数
1
解决办法
1万
查看次数

以编程方式更改图层列表Drawable项的底部属性

我正在创建一个LayerDrawable创建底部笔划,但我不知道如何给出图层的下边距(Drawablw).

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:bottom="2dp">
      ..
        </item>
    </layer-list>
Run Code Online (Sandbox Code Playgroud)

我想以编程方式设置上面的底部边距.

到目前为止,我已经这样做了:

Drawable[] list = new Drawable[2];
GradientDrawable strokeDrawable = new GradientDrawable(
    GradientDrawable.Orientation.TOP_BOTTOM, new int[] {
        strokeColor[0], strokeColor[0] });
GradientDrawable backgroundDrawable = new GradientDrawable(
    GradientDrawable.Orientation.TOP_BOTTOM, bgColor);
// Now how to set bottom margin to make border. 

list[0] = strokeDrawable;
list[1] = backgroundDrawable;

LayerDrawable layerDrawable = new LayerDrawable(list);
Run Code Online (Sandbox Code Playgroud)

有人知道吗?

android layer-list layerdrawable

5
推荐指数
2
解决办法
2396
查看次数

android中的&lt;layer-list&gt;如何工作?

<layer-list>经常在android中使用标记来做各种事情,例如向视图中添加阴影和背景,创建自定义形状等。无论我需要什么,总是在互联网上的某个地方。因此,我将其复制并按原样使用。

但是我想知道它<layer-list>是如何工作的?如何<items>命令以获得正确的形状或效果?我想知道,这样每当需要某种自定义形状或效果时,我都可以自己做。

我认为<layer-list>android中一个非常强大的工具可以创建您想要的任何东西。自从我在android上进行开发以来,我已经进行了大量的搜索,但是我找不到任何合适的文档或教程,其中可能包含逐步指南或说明来创建形状或您选择的效果。

如果有人可以向我解释,那就太好了。提前致谢!!

android android-layout android-xml layer-list android-drawable

5
推荐指数
0
解决办法
701
查看次数

无法在XML的位图中加载矢量Drawable

这是我的第一个在中加载Vector-Drawable的代码layer-list。后来我不得不改变我的矢量可绘制的颜色。我发现我应该添加位图以使用tint属性。这是我的第一个代码和vector drawable在中显示良好layer-list

<item>
    <shape
        android:padding="1dp"
        android:shape="oval">
        <corners
            android:bottomLeftRadius="5dp"
            android:bottomRightRadius="5dp"
            android:topLeftRadius="5dp"
            android:topRightRadius="5dp"/>
        <solid android:color="@color/accent"/>
    </shape>
</item>
<item android:drawable="@drawable/ic_check_black_24px"/> // this is vector drawable
Run Code Online (Sandbox Code Playgroud)

所以我将代码更改为此。我无法在XML的位图中加载vector-Drawable。

<item>
    <shape
        android:padding="1dp"
        android:shape="oval">
        <corners
            android:bottomLeftRadius="5dp"
            android:bottomRightRadius="5dp"
            android:topLeftRadius="5dp"
            android:topRightRadius="5dp"/>
        <solid android:color="@color/accent"/>
    </shape>
</item>
<item>
    <bitmap
        android:src="@drawable/ic_check_black_24px"
        android:tint="@color/white"/>
</item>
Run Code Online (Sandbox Code Playgroud)

问题在这里。我无法在位图中加载vector-drawable,这会导致我的应用崩溃。

android vector bitmap layer-list

5
推荐指数
0
解决办法
968
查看次数

图层列表中平铺位图的剪辑角

我希望完成一些看起来像这里底部的操作(对于所有四个角,但是我只显示图像的底部):

在此处输入图片说明

到目前为止,我有:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/orange_tile"
            android:tileMode="repeat"
            android:dither="true"
            android:gravity="center" />
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="2dp"/>
            <stroke android:color="@color/white" android:width="0.5dp" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

然而,这给了我一个tiiiny在每个角落像素,按预览:

在此处输入图片说明

那么,我该如何抓住那些角落?可见的笔触不是它,不是实际需要的...


尝试过的事情:

将固体添加到项目中可以得到与我想要的完全相反的效果。可能有掩盖技巧...

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/orange_tile"
            android:tileMode="repeat"
            android:dither="true"
            android:gravity="center" />
    </item>
    <item>
        <shape android:shape="rectangle">
            <color android:color="@color/white" />
            <corners android:radius="2dp"/>
            <stroke android:color="@color/white" android:width="0.5dp" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


磁贴:

一个简单的瓷砖

android android-resources layer-list

5
推荐指数
1
解决办法
862
查看次数

如何在android可绘制对象中一个接一个地绘制多个形状,类似于垂直方向的Liner布局

我想使用 android 可绘制对象依次绘制以下形状 - 直线和圆形。请参阅随附的屏幕截图。

在此输入图像描述

geometry android shapes drawable layer-list

4
推荐指数
1
解决办法
2730
查看次数

图层列表:使用填充移动底部的形状线

我正在为编辑文本定义选择器背景,并且我希望在编辑文本聚焦时有底线。

这就是我想要实现的目标:

在此输入图像描述

到目前为止我有这个:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <stroke
            android:width="1dp"
            android:color="@android:color/black" />
        <corners android:radius="3dp" />
    </shape>
</item>
<item>
    <shape android:shape="line">
        <stroke android:color="@android:color/black" android:width="1dp"/>
    </shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

它显示了这条线正好在中间,我想把它放在底部,还有左右填充。

有没有办法使用图层列表来实现这一点,或者也许有更好的方法?

android layer-list

3
推荐指数
1
解决办法
3932
查看次数

Android:更改图层列表的颜色

我有一个图层列表

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="@color/custom_color" />
        </shape>
    </item>
    <item android:top="-2dp" android:right="-2dp" android:left="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="1dp"
                android:color="@android:color/white"/>
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

并希望在我的项目中的多个位置重用此可绘制对象,以便@color/custom_color(在上面的示例中)在每种情况下都被替换为不同的颜色。应该有一种方法来实现它,而不是创建一个单独的可绘制对象。有任何想法吗?

user-interface android layer-list

3
推荐指数
1
解决办法
5023
查看次数