Android seekbar - 在设置drawable后,它是不可见的

时间:2012-01-10 08:42:59

标签: android seekbar

我有一个搜索栏,我在代码中设置拇指可绘制。当活动开始时我可以看到拇指改变了drawable但是如果我从搜索栏活动开始一个新的活动然后回来,搜索栏的拇指就会变得不可见(只有当我再次设置它的可绘制时)。只有当我从其他活动回到搜索栏活动时才会发生这种情况。

我需要在onRestart()中更改拇指的drawable,因为其他活动可能会改变拇指的颜色或形状,我需要刷新它的drawable。

我在搜索栏上尝试了invalidate()但没有用...

修改 我尝试制作3个静态Drawable对象并在onCreate()中加载图像,我注意到在回到SeekBar活动后,如果我将拇指绘制设置为已经设置的拇指,则拇指可见但是如果我更改了drawable,拇指就会变得不可见。

编辑2:

在这种情况下,我将加载的drawable设置为拇指:

String gender = getGender();
    if (gender.equals(Profile.GENDER_1)) {
        mSeekBar.setThumb(mDrawable1);
    } else if (gender.equals(Profile.GENDER_2)) {
        mSeekBar.setThumb(mDrawable2);
    } else {
        mSeekBar.setThumb(mDrawable3);
    }

这就是我试图从资源中获取可绘制的

String gender = getGender();

if (gender.equals(Profile.GENDER_1)) {
    mDrawable = mSeekBar.getContext().getResources().getDrawable(R.drawable.slider_thumb_1);
} else if (gender.equals(Profile.GENDER_2)) {
    mDrawable = mSeekBar.getContext().getResources().getDrawable(R.drawable.slider_thumb_2);
} else {
    mDrawable = mSeekBar.getContext().getResources().getDrawable(R.drawable.slider_thumb_3);
}

mSeekBar.setThumb(mDrawable);

在这两种情况下,拇指都变得不可见了..

可能是什么问题?有人知道答案吗? 谢谢!

1 个答案:

答案 0 :(得分:13)

在使用之前,您没有设置drawable的界限。

尝试在setThumb()调用之前添加此行:

mDrawable.setBounds(0,0, 
    mDrawable.getIntrinsicWidth(), 
    mDrawable.getIntrinsicHeight()
);