Rog*_*ueX 13 android android-5.0-lollipop
只是测试新的开发人员预览,并注意到我现有的环形抽屉没有正确渲染.而不是一个戒指,它是一个完整的圆圈.这是一个错误或有什么改变或我开始时做错了吗?任何可能的解决方
这是代码:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/progress">
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="7.0">
<solid android:color="#ff5698fb"/>
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新
我更新了形状如下:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="7.0">
<solid android:color="#ff5698fb"/>
</shape>
</item>
<item >
<shape
android:innerRadiusRatio="4"
android:shape="ring"
android:thicknessRatio="5.5">
<solid android:color="#ffffff"/>
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
通过覆盖两个圆圈产生一个环.但是我使用它的进度条不起作用.以下是进度条的代码:
<ProgressBar
android:id="@+id/progressCircle"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:indeterminate="false"
android:max="100"
android:progress="65"
android:rotation="270"
android:progressDrawable="@drawable/progress_circle"
android:visibility="visible"/>
Run Code Online (Sandbox Code Playgroud)
小智 21
您需要添加android:useLevel="true"进度项.这在以前的版本中似乎没有必要,但L想要它.
<item android:id="@android:id/progress">
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="7.0"
android:useLevel="true" >
<solid android:color="#ff5698fb"/>
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
Chr*_*cía 21
useLevel自定义进度条中使用的所有环形的值.卡诺的答案是解决问题的方法.我正在补充它,以在自定义进度条中添加有关环形状的一般信息.
似乎默认值useLevel已经改变了Android版本.这是与之相关的调查.
以下是使用响铃作为进度指示器的进度条的工作实现,以及另一个响铃作为进度背景:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Progress background -->
<item android:id="@android:id/background">
<shape
android:shape="ring"
android:useLevel="false">
<solid
android:color="#dae1e6"/>
</shape>
</item>
<!-- Progress -->
<item android:id="@android:id/progress">
<!-- Rotation of the progress to start at the top-->
<rotate
android:fromDegrees="-90"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="-90">
<shape
android:shape="ring"
android:useLevel="true">
<solid
android:color="#61bcf9"/>
</shape>
</rotate>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
将其用作以下progressDrawable内容ProgressBar:
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="100dp"
android:layout_height="100dp"
android:progressDrawable="@drawable/custom_horizontal"
android:progress="50"
android:max="100"
android:id="@+id/progressBar"
android:layout_gravity="center"/>
Run Code Online (Sandbox Code Playgroud)
设置useLevel=true为进度环形状和useLevel=false背景环形状,为所有Android版本提供正确的所需行为:

useLevel从背景形状中删除:
Pre 5.0(左)| 5.0(右)

useLevel从进度形状中删除:
Pre 5.0(左)| 5.0(右)

因此,据我所知,useLevel用于指示形状是否受进度值的影响.如果不是(假),它将被完全涂上; 如果是(真),它将被绘制为与进度值一样多.
总而言之,似乎:
useLevel默认为true在Android的<5.0,导致背景环跟随进展值,如果useLevel在其环形状没有被设置,从而使得隐藏进度指示器环后面.useLevel默认为false在的Android> = 5.0,导致如果被充分涂进度指示器环useLevel在其环形状没有被设置.因此,由于这种不一致性,最好在依赖于进度的形状中明确设置to的值,useLevel而true在不依赖于进度的形状中设置值的值false.
这种行为是基于我的观察,我没有找到任何确认它的来源.官方Android文档对此并不十分清楚......
| 归档时间: |
|
| 查看次数: |
3554 次 |
| 最近记录: |