标签: layer-list

Android:如何指定<layer-list>的不透明度?

我希望 LayerList 的不透明度为 80,所以我写道:

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

但我得到:

Error: Integer types not allowed (at 'opacity' with value '80')
Run Code Online (Sandbox Code Playgroud)

如何指定不透明度?

android opacity android-layout layer-list

7
推荐指数
1
解决办法
9698
查看次数

Android XML图层列表:如何定位顶层

我有这个XML drawable - tab_background_unselected:

<?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/background_grey" />            
        </shape>
    </item>

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

创建这个形状:

背景矩形

这个箭头形状xml drawable - tab_selected_arrow:

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

    <item>
        <rotate
            android:fromDegrees="45"
            android:pivotX="-40%"
            android:pivotY="87%"
            android:toDegrees="45" >
            <shape android:shape="rectangle" >
                <solid android:color="@color/background_dark_green" />
            </shape>
        </rotate>
    </item>

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

创建这个形状:

顶层三角形

我正在使用这个可绘制的XML(而不是PNG文件)来创建一个图层列表:

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

    <item android:drawable="@drawable/tab_background_unselected">
    </item>
    <item android:drawable="@drawable/tab_selected_arrow">
    </item>

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

但我希望最终图像看起来像这样:

最终形象

我不知道如何将箭头的重力(第二项和顶层)设置为居中|我已尝试使用bitmap标签,但它只接受图像文件.

我需要这是一个XML drawable因为

  1. 我需要它在一个可绘制的选择器内
  2. 我不想让它成为PNG并为每个屏幕分辨率创建不同的文件

xml android layer-list

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

如何在xml中重新创建此背景?

我一直在尝试在xml中重新创建一个背景图像(作为drawable).由于背景是一个简单的形状,如果它被创建为xml drawable会更好.

[背景图片] 是一个非常大的渐变圆,在左边,上边和右边交叉.


我试过的

<?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="20dp" />
            <gradient
               android:type="linear"
               android:startColor="@color/gradientLeft"
               android:centerColor="@color/gradientMiddle"
               android:endColor="@color/gradientRight"
               android:angle="0" />
        </shape>
    </item>
    <item>
        <shape
           android:shape="oval">
            <padding
               android:top="20dp" />
            <gradient
               android:type="linear"
               android:startColor="@color/gradientLeft"
               android:centerColor="@color/gradientMiddle"
               android:endColor="@color/gradientRight"
               android:angle="0" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

我试图创建一个图层列表.该图层列表包含2个形状,矩形和椭圆形.

矩形具有渐变和20dp的高度(以进行测试).

椭圆形也具有相同的渐变,顶部填充为20dp.


但是,这不会创建圆形,而是使用渐变填充整个形状.有人能帮我吗?

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

7
推荐指数
1
解决办法
228
查看次数

Android:如何以百分比设置形状可绘制高度?

在我的应用程序中,有多个不同高度的组件具有相同的渐变背景(我在图层列表中使用了多个形状和渐变项)。

但是在项目标签中,我必须以 50dip 指定形状的高度,并且我想在多个具有百分比度量的 UI 组件中重用它。

我发现形状中不支持重量属性。那么有没有其他替代方法可以使其在不同大小的视图或任何百分比支持的方式下工作?

我想获得 XML 样式的解决方案。

图层列表看起来像

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <item
        android:drawable="@drawable/green_horizontal_gradient"
        android:id="@+id/upper_gradient"
        />
    <item
        android:drawable="@drawable/half_overlay"
        android:id="@+id/lower_overlay"
        android:top="50dp"
        />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

android layer-list android-drawable

6
推荐指数
0
解决办法
2569
查看次数

膨胀图层 - 在android中的形状列表

我在我的drawable文件夹中有以下文件/drawable/mybkg.xml.我想给它充气,这样我就可以通过编程方式更改颜色.这可能在Android?

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

    <item>
        <shape android:shape="oval" >
            <padding
                android:top="5dp"
                android:bottom="2dp"
                android:left="2dp"
                android:right="2dp" />

            <solid
                android:angle="270"
                android:color="#1bd4f6" />

            <stroke
                android:width="2dp"
                android:color="#121ce5" />
        </shape>
    </item>

    <!-- Foreground -->
    <item>
        <shape android:shape="oval" >

            <solid android:color="#1b90f6" />
        </shape>
    </item>

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

我刚才看到一个叫做的课 LayerDrawable.有谁知道如何LayerDrawable通过编写代码或膨胀现有的xml 将我的xml文件转换为这样的文件 ?

android android-layout android-inflate layer-list

6
推荐指数
1
解决办法
802
查看次数

自定义垂直进度条

我制作了一个自定义的垂直进度条,我想在它旁边显示标签。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <solid android:color="#777" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <layer-list>
            <item>
                <clip
                    android:clipOrientation="vertical"
                    android:gravity="bottom">
                    <shape>
                        <gradient
                            android:angle="90"
                            android:centerColor="#FFFF00"
                            android:endColor="#FF0000"
                            android:startColor="#00FF00" />
                    </shape>
                </clip>
            </item>
            <item>
                <clip
                    android:clipOrientation="vertical"
                    android:gravity="fill">
                    <layer-list>
                        <item android:top="75dp">
                            <shape android:shape="line">
                                <stroke
                                    android:width="2dp"
                                    android:color="#333" />
                            </shape>
                        </item>

                        <item android:top="25dp">
                            <shape android:shape="line">
                                <stroke
                                    android:width="2dp"
                                    android:color="#333" />
                            </shape>
                        </item>

                        <item android:bottom="25dp">
                            <shape android:shape="line">
                                <stroke
                                    android:width="2dp"
                                    android:color="#333" />
                            </shape>
                        </item>

                        <item android:bottom="75dp">
                            <shape android:shape="line">
                                <stroke
                                    android:width="2dp"
                                    android:color="#333" />
                            </shape>
                        </item>
                    </layer-list>
                </clip>
            </item>
        </layer-list> …
Run Code Online (Sandbox Code Playgroud)

xml android label progress-bar layer-list

6
推荐指数
0
解决办法
2332
查看次数

Android自定义循环ProgressBar方向

我有一个自定义循环进度条.这是我可以确定的可绘制的:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@android:id/secondaryProgress">
    <shape
        android:innerRadiusRatio="6"
        android:shape="ring"
        android:thicknessRatio="20.0"
        android:useLevel="true">
     <gradient
          android:centerColor="#999999"
          android:endColor="#999999"
          android:startColor="#999999"
          android:type="sweep" />
    </shape>
  </item>
  <item android:id="@android:id/progress">
   <rotate
      android:fromDegrees="270"
      android:pivotX="50%"
      android:pivotY="50%"
      android:toDegrees="270">

  <shape
      android:innerRadiusRatio="6"
      android:shape="ring"
      android:thicknessRatio="20.0"
      android:useLevel="true">


    <rotate
        android:fromDegrees="360"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="0" />

    <gradient
        android:centerColor="?attr/colorAccent"
        android:endColor="?attr/colorAccent"
        android:startColor="?attr/colorAccent"
        android:type="sweep" />

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

我希望它以顺时针方向显示进度,但现在它显示逆时针方向.

我该如何改变它?

android android-layout android-progressbar layer-list

6
推荐指数
1
解决办法
2062
查看次数

向 API 19 设备添加多个 LayerList 导致膨胀错误

我正在尝试创建一个具有两个背景的按钮,我的自定义背景

android:background="@drawable/background_profile_edit_button" + ?attr/selectableItemBackground```
Run Code Online (Sandbox Code Playgroud)

完整按钮:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/fragprofile_constraint"
    app:layout_constraintRight_toRightOf="parent"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="16dp"
    android:background="@drawable/background_profile_edit_button"
    android:paddingStart="32dp"
    android:paddingTop="6dp"
    android:paddingEnd="32dp"
    android:paddingBottom="6dp"
    android:text="Edit Profile"
    android:textColor="@color/colorBlackFont"
    android:textSize="12sp"
    android:textStyle="bold"/>
Run Code Online (Sandbox Code Playgroud)

这可以很容易地解决,android:foreground="?attr/selectableItemBackground"但是需要 api 23 而我的最小值是 19。

我还尝试了另一种在 drawable 中使用 layer-list 的方法:

<?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/colorWhite" />

            <stroke
                android:width="1dp"
                android:color="@color/dividerColor" />
            <corners android:radius="3dp"/>
        </shape>
    </item>

    <item
        android:drawable="?attr/selectableItemBackground">
    </item>


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

此图层列表在我的更高 API 设备上完美运行。但是它导致我的 API 19 设备崩溃......

android.view.InflateException: Binary XML file line #201: Error inflating class TextView

这个人也有同样的问题,也没有得到答复:

LayerList 错误 API 19:标签需要“drawable”属性或定义可绘制对象的子标签

TLDR:_________________________________________________________

在此处输入图片说明

在 …

android layer-list

6
推荐指数
1
解决办法
283
查看次数

&lt;layer-list&gt; 背景禁用 android:padding 设置

我有一个ListView自定义项目布局和自定义背景。问题是android:padding在我将可绘制背景从<shape>to切换后, value 似乎被忽略了<layer-list>

布局/list_item.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_list_item_bill"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="12dp">

    . . .
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

drawable/list_item_background.xml

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
        <solid android:color="@color/white" />
        <corners android:radius="@dimen/corner_radius" />
        <stroke android:width="1dp" android:color="@color/blue" />
</shape>
Run Code Online (Sandbox Code Playgroud)

以上按预期工作。填充消失当我改变drawable/list_item_background.xml

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

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

    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/white" />
            <corners android:radius="@dimen/corner_radius" />
            <stroke android:width="1dp" android:color="@color/blue" />
        </shape>
    </item>

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

我错过了什么?

android layer-list

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

Android RecyclerView 不会以编程方式更改第一个项目的背景颜色

我正在创建一个带有RecyclerView. 每个列表项都是来自用户的帖子(现在是硬编码的)。每个帖子的背景都是从layer-list可绘制文件夹中的 XML 文件加载的。

文本等一切都按预期工作,但我正在尝试以编程方式更改背景颜色。它改变了每个项目的背景颜色,除了第一个项目,我不明白为什么。

第一项始终获取XML 文件中调用的内部solid颜色指定的背景颜色,因此不会更改,但后面的项获取 color 。shapeitemshape_background#ff22ff

这是适配器的实现:

class PostListAdapter extends RecyclerView.Adapter<PostListAdapter.PostViewHolder>{

    private LayoutInflater inflater;
    private List<PostRow> data = Collections.emptyList();

    PostListAdapter(Context context, List<PostRow> data) {
        inflater = LayoutInflater.from(context);
        this.data = data;
    }

    @Override
    public void onBindViewHolder(PostViewHolder holder, int position) {

        PostRow current = data.get(position);
        holder.text.setText(current.text.toUpperCase());
        holder.time.setText(current.time.toUpperCase());
        holder.answers.setText(current.answers.toUpperCase());

        try {
            // "#ff22ff" will be changed to current.color, unique color for every post
            // That string is parsed …
Run Code Online (Sandbox Code Playgroud)

android shapes layer-list android-recyclerview gradientdrawable

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