可以按如下方式在XML中创建SeekBar ...
<SeekBar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bpseekbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:max="100"
android:maxHeight="8dp"
...
现在我想以编程方式执行此操作,因为我需要根据屏幕分辨率调整maxHeight(是的,我知道不应该这样做,但我有正当理由)。我没有以编程方式设置参数的问题,除了我无法找到如何设置maxHeight。我觉得我需要使用属性,但我找不到具体的方法。任何提示?
答案 0 :(得分:5)
这不是直接可能的。 SeekBar(实际上是SeekBar扩展的ProgressBar)只从XML布局属性获取maxHeight,没有相应的方法。
此外,ProgressBar在调用setProgressDrawable时将其maxHeight增加到至少为drawable的高度。你可以利用它。
另一种可能性是扩展SeekBar并提供自己的onMeasure方法。这实际上是使用maxHeight的地方。然后,您可以在xml布局中使用扩展的SeekBar。
答案 1 :(得分:0)
以编程方式设置seekBar的maxHeight的最佳方法是使用第四个构造函数SeekBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)
,请按照以下步骤操作:
<style name="SeekBarDefaultStyle">
<item name="android:maxHeight">1dp</item>
<item name="android:indeterminateOnly">false</item>
<item name="android:focusable">true</item>
<item name="android:mirrorForRtl">true</item>
</style>
mSeekBar = new SeekBar(context, null, 0, R.style.SeekBarDefaultStyle);
顺便说一句,Google决定支持API 29中的setMaxHeight方法:https://developer.android.com/reference/android/widget/ProgressBar.html#setMaxHeight(int)