you*_*uri 11 user-interface android progress-bar
我想在android中创建一个自定义进度条.我已经使用了以下xml文件(progress_bar_horizontal.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>
<corners android:radius="8dip" />
<stroke android:width="2dip" android:color="#FFFF"/>
<solid android:color="#FFFF"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="8dip" />
<stroke android:width="2dip" android:color="#FFFF"/>
<solid android:color="#FF00"/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="8dip" />
<stroke android:width="2dip" android:color="#FFFF"/>
<solid android:color="#FF00"/>
</shape>
</clip>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
除了事实上我希望双方的进度条都有进展之外,一切都很有效.上述代码使得进度条在左侧被舍入并且简单地在右侧切割(不是圆形).这可能是因为剪辑标签.你能帮帮我吗?我应该改变什么才能在我的进度条中取得进展?
完整的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/gradient_progress"
android:padding="10dip"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/progress_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"
android:text="Uploading"
/>
<TextView
android:id="@+id/progress_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"
android:text="55%"
android:paddingLeft="10dip"
/>
</LinearLayout>
<ProgressBar
android:id="@+id/progress_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:progressDrawable="@drawable/progress_bar_horizontal"
android:maxHeight="12dip"
android:minHeight="12dip"
android:max="100"
/>
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
以下是我努力的结果:链接文字
我希望红色的条纹在右侧也有圆角.非常感谢你的评论.
Fun*_*nal 28
这是时代的更新答案:
Android源代码使用Patch 9文件来实现此效果:http: //grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/ RES/RES /抽拉/ progress_horizontal_holo_dark.xml /
所以从布局xml开始:
<ProgressBar
android:id="@+id/custom_progress_bar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:indeterminateOnly="false"
android:progressDrawable="@drawable/custom_progress_bar_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="13"
android:progress="33"
android:secondaryProgress="66" />
Run Code Online (Sandbox Code Playgroud)
你可以将很多这个移动到一个样式xml,但这不是重点.我们真正关心的是android:progressDrawable="@drawable/custom_progress_bar_horizontal"- 这将允许我们指定我们自己的自定义进度条:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background"
android:drawable="@android:drawable/custom_progress_bg" />
<item android:id="@android:id/secondaryProgress">
<scale android:scaleWidth="100%"
android:drawable="@android:drawable/custom_progress_secondary" />
</item>
<item android:id="@android:id/progress">
<scale android:scaleWidth="100%"
android:drawable="@android:drawable/custom_progress_primary" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
或者您不必使用Patch 9作为背景 - 例如,这里是一个带有1dp边框的简单白色背景:
<item android:id="@android:id/background">
<shape>
<corners android:radius="6.5dp" />
<solid android:color="@android:color/white" />
<stroke
android:width="1dp"
android:color="@android:color/darker_gray" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
Android Asset Studio有一个很棒的工具来帮助您生成Patch 9文件:http: //android-ui-utils.googlecode.com/hg/asset-studio/dist/nine-patches.html
在工具之前使用填充的示例主xdpi png:

在工具之前使用填充的辅助xdpi png示例:

最后的输出:

小智 15
只是改变标签<clip>,以<scale>这样的:
<scale android:scaleWidth="100%">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24417 次 |
| 最近记录: |