我從SeekBar創建顏色選擇器。到目前爲止,我已經成功地替換了onCreate()中繪製的進度,如下所示:如何獲取寬度以正確設置LinearGradient
SeekBar colorChooser = (SeekBar) findViewById(R.id.seekBarColorChooser);
LinearGradient rainbow = new LinearGradient(0f, 0f, 100f, 0f,
new int[] { 0xFFFF0000, 0xFFFFFF00, 0xFF00FF00,
0xFF00FFFF, 0xFF0000FF,
0xFFFF00FF, 0xFFFF0000}, null, TileMode.CLAMP);
RoundRectShape roundedRect = new RoundRectShape(new float [] {10f, 10f, 10f, 10f, 10f, 10f, 10f, 10f} , null, null);
ShapeDrawable shape = new ShapeDrawable(roundedRect);
shape.getPaint().setShader(rainbow);
colorChooser.setProgressDrawable((Drawable) shape);
這很好用!結果正是我所尋找的,但是,我關心的一件事是LinearGradient中的硬編碼寬度(100f)。
由於此對話框尚未實現,因此SeekBar或對話框都沒有任何寬度。換句話說,colorChooser.getWidth()返回0.
如果寬度太小,則漸變在左側被壓縮。如果太大,只會出現一部分漸變。如何獲得良好的寬度值以設置線性漸變以正確顯示?
謝謝!
感謝您的想法。它仍然有點像硬編碼,但它確實有效。我確信一旦我在另一個平臺上測試,我的擔憂就會消失。謝謝! – Chris 2011-12-22 17:38:27
好吧,無論如何,您在圖形或包裝內容之後調整組件的大小 - 因爲您的進度可繪製沒有任何內容(我假設)您將不得不爲它指定大小 - 更好是一個大小可根據設備正確配置。 – Jens 2011-12-23 08:02:49