我希望 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)
如何指定不透明度?
我有这个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因为
我一直在尝试在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
在我的应用程序中,有多个不同高度的组件具有相同的渐变背景(我在图层列表中使用了多个形状和渐变项)。
但是在项目标签中,我必须以 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) 我在我的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文件转换为这样的文件 ?
我制作了一个自定义的垂直进度条,我想在它旁边显示标签。
<?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 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: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:_________________________________________________________
在 …
我有一个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)
我错过了什么?
我正在创建一个带有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
android ×10
layer-list ×10
xml ×2
android-xml ×1
label ×1
opacity ×1
progress-bar ×1
shapes ×1