我正在使用自定义搜索栏来显示图表。我做到这一点。我通过将可绘制的背景应用于搜索栏来显示此图。现在我的问题是,我需要将蓝色设置为可绘制的进度,并需要将搜索条的背景设置为红色图形。因此,当进展发生时,拇指移动过红色,拇指通过的区域应该像掩蔽效果一样变为蓝色。任何人都可以告诉最好的方法来做到这一点。我的照片显示在
下方答案 0 :(得分:5)
在阅读完所有问题和答案之后,我希望这应该成为你完成任务的场景......
1.创建两个图表 按照你的逻辑。
2.从特定的位图生成两个drwable ......
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);
这应该像你想要的那样....感谢
答案 1 :(得分:2)
这不是你想要的吗?
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));
}
}
答案 2 :(得分:0)
您应该为SeekBar使用自定义progressDrawable
。有关优秀的教程,请参阅this blog post。
答案 3 :(得分:0)
你可以创建一个自定义视图。取消它的onTouch()
方法来改变拇指的位置。也可以覆盖它的onDraw()
方法并首先绘制红色图形作为视图的背景,然后从位置绘制蓝色图形这对应于拇指的位置。