我想創建一個SeekBar類似於在我的應用程序中選擇搜索類型的優步應用程序。爲此,我相信SeekBar中可繪製的拇指應該以編程方式更改。到目前爲止,drawable會在應該改變的時候改變,但drawable的大小不會和我的資源文件中定義的一樣。 SeekBar是片段的一部分。SeekBar縮略圖的大小在更改可繪製的程序時發生變化
這是我用於繪製拇指的圖層列表資源文件。 seekbar_thumb_size = 16dp。
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval" android:innerRadius="@dimen/seekbar_thumb_size">
<solid android:color="#ffffff"/>
<size
android:width="@dimen/seekbar_thumb_size"
android:height="@dimen/seekbar_thumb_size"/>
<stroke
android:width="1dp"
android:color="@color/colorPrimary"/>
</shape>
</item>
<item android:drawable="@drawable/ic_bars" android:gravity="center"/>
</layer-list>
它應該顯示一個帶有邊框的圓和一個以圓心爲中心的矢量可繪製圖標。我的預覽給了我下面的圖像:
現在,當我的片段的onStart方法被調用時,這在SeekBar中正確顯示。但是,當我嘗試以編程方式更改可繪製的拇指時,它看起來像圓的大小收縮以匹配圖標的高度和寬度(如下所示)。
我有一種感覺,這與運行過程中,我檢索繪製的方式做。我嘗試了各種方法,並繼續以相同的結果,一個縮小的drawable。
這裏是我做訪問方法提拉:
我已經宣佈在類的可繪製對象:
private Drawable BARS_DEFAULT;
創建位圖和使用,對於繪製
Bitmap bitmap1 = BitmapFactory.decodeResource(resources,R.drawable.bg_bars_default); BARS_DEFAULT = new BitmapDrawable(getActivity().getResources(), bitmap1); _seekbar.setThumb(BARS_DEFAULT);
(棄用)直接獲取資源可用
BARS_DEFAULT = getActivity().getResources().getDrawable(R.drawable.bg_bars_default); _seekbar.setThumb(BARS_DEFAULT);
使用ContextCompat
BARS_DEFAULT = ContextCompat.getDrawable(getActivity().getApplicationContext(), R.drawable.bg_bars_default); _seekbar.setThumb(BARS_DEFAULT);
所有這些嘗試導致圖標一旦達到合適的搜索欄值時,繪製改變正在縮小。
最後一件事,可繪製的變化是在setOnSeekBarChangeListener接口的onStopTrackingTouch方法中進行的。