我试图通过覆盖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
}
但我得到的值也没有反映屏幕位置!有谁知道我如何获得这些价值观?
答案 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);