我正在使用自定义搜索栏来显示图表。我已经做到了。我通过将背景可绘制对象应用于搜索栏来显示此图。现在我的问题是,我需要将蓝色设置为进度可绘制,并且需要将搜索栏的背景设置为红色图形。因此,当进度发生时,拇指移动到红色上方,拇指经过的区域应更改为蓝色,就像蒙版效果一样。任何人都可以告诉最好的方法来做到这一点。我的照片如下所示
问问题
1554 次
4 回答
5
在阅读完所有问题和答案后,我希望这应该是您完成任务的场景......
1.根据您的逻辑创建两个图表。
2.从特定的位图生成两个drwables....
Drawable G_bg = new BitmapDrawable(Red graph bitmap);
Drawable G_pg = new BitmapDrawable(Blue graph bitmap);
3.然后使用通过java代码创建的层列表自定义您的搜索栏。
ClipDrawable c=new ClipDrawable(G_pg, Gravity.LEFT,ClipDrawable.HORIZONTAL);
LayerDrawable ld =new LayerDrawable (new Drawable[]{G_bg,c});
4.将此图层列表应用到您的搜索栏。
Graphbar.setProgressDrawable(ld);
这应该像你想要的那样工作......谢谢
于 2013-05-10T09:39:26.457 回答
3
这不是你想要的吗?
my_seek_bar_progress.xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@android:id/background"
android:drawable="@drawable/red_graph"/>
<item android:id="@android:id/progress">
<clip android:drawable="@drawable/blue_graph" />
</item>
</layer-list>
在片段或活动布局中:
<com.example.seekbaroverlay.MySeekBar
android:id="@+id/mySeekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100" />
MySeekBar.java:
public class MySeekBar extends SeekBar {
public MySeekBar(Context context) {
this(context, null);
}
public MySeekBar(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MySeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setProgressDrawable(context.getResources().getDrawable(R.drawable.my_seek_bar_progress));
setThumb(context.getResources().getDrawable(R.drawable.my_thumb));
}
}
于 2013-05-10T00:22:36.803 回答
0
您应该progressDrawable
为您的 SeekBar 使用自定义。请参阅此博客文章以获取出色的教程。
于 2013-05-06T18:41:28.990 回答
0
您可以创建一个自定义视图。覆盖它的onTouch()
方法来改变拇指的位置。也覆盖它的onDraw()
方法,首先绘制红色图形作为视图的背景,然后从对应于拇指位置的位置绘制蓝色图形。
于 2013-05-07T21:18:55.147 回答