获取当前搜索栏进度/次要进度的屏幕位置?

时间:2012-05-04 15:31:13

标签: android customization seekbar

我试图通过覆盖onDraw()方法来自定义搜索栏的外观 - 我需要在屏幕上找到当前进度/辅助进度位置。

我知道如何通过getProgress()getSecondaryProgress()获取当前进度/次要进度,但这并不反映屏幕上的位置。我以为我可以得到可绘制的进度并获得drawable的边界,或者像进展这样使用的clipDrawable的级别:

Drawable progress = getProgressDrawable();
        if (progress instanceof LayerDrawable)
        {
            Drawable primaryProgress = ((LayerDrawable)progress).findDrawableByLayerId(android.R.id.progress);
            Rect bounds= primaryProgress.copyBounds();//bounds.left is 0, bounds.right is the screen width
            ((ClipDrawable)primaryProgress).getLevel();//just gives a value between 0 and 10,000
        }

但我得到的值也没有反映屏幕位置!有谁知道我如何获得这些价值观?

1 个答案:

答案 0 :(得分:0)

我通过将最大进度设置为屏幕宽度来解决这个问题:

    WindowManager wm = (WindowManager) myAppContext.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();
    Point size = new Point();
    try{
        display.getSize(size);//only works on later versions of android
    }
    catch (Exception e) {

        int width = display.getWidth();  // deprecated
        int height = display.getHeight();  // deprecated
        size = new Point(width, height);
    }
myProgressBar.setMax(size.x);