我在应用程序中定义了一个SeekBar,如下所示:
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />我想把一个图像放在它旁边,这是相同的高度的SeekBar。我需要以编程的方式设置图像的高度,以便在所有设备上保持不变。然而,我无法获得SeekBar的高度。
下面的代码返回视图的高度,而不是SeekBar。
mReadingSeekBar = (ReadingSeekBar) findViewById(R.id.seekbar);
mBarHeight = mReadingSeekBar.getHeight();这段代码也不起作用。它只返回0:
mBarHeight = mReadingSeekBar.getProgressDrawable().getMinimumHeight();是否有一种方法可以找到SeekBar的实际大小,而不仅仅是视图大小?
发布于 2013-09-11 15:02:53
我想出了一个更好的方法。我在我的样式文件中设置了ProgressDrawable的高度,以便在所有设备上保持相同的大小。下面是我在样式xml文件中声明它的方式:
<style name="tallerBarStyle" parent="@android:style/Widget.SeekBar">
<item name="android:indeterminateOnly">false</item>
<item name="android:progressDrawable">@drawable/styled_progress</item>
<item name="android:indeterminateDrawable">@drawable/styled_progress</item>
<item name="android:minHeight">8dp</item>
<item name="android:maxHeight">21dp</item>
</style>然后在我的SeekBar中使用它,如下所示:
<SeekBar
android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/tallerBarStyle" />发布于 2014-11-13 17:30:23
我知道你用别的方法解决了这个问题。但我认为这不是你问题的正确答案。
用这种方法,
seekBar.getProgressDrawable().getBounds()它返回进度绘图的Rect {左、上、右、下}。
(自下而上)给我一个可绘制的进度高度,而不是seekBar的高度.
发布于 2019-02-15 23:02:29
通过深入源代码,我发现indeterminateDrawable具有可绘制的(默认)进度高度。
mBarHeight = mReadingSeekBar.getIndeterminateDrawable().getIntrinsicHeight();https://stackoverflow.com/questions/18740322
复制相似问题