2013-05-09 15 views
11

Tôi có mặc định seekbar trong ứng dụng Android của mình. Tôi nhận thấy rằng khi các thumb trên seekbar được tổ chức, nó chuyển sang màu vàng. Thay vào đó, tôi muốn nó chuyển sang màu xanh khi nó được giữ. Điều này có thể giải quyết như thế nào? Tôi xin lỗi nếu đây là câu hỏi cơ bản, tôi mới phát triển Android. Cảm ơn.Làm cách nào để thay đổi màu của ngón tay cái trong thanh tìm kiếm?

Trả lời

13

Nếu bạn không thích những ngón tay cái mặc định, bạn sẽ phải tạo riêng Drawable của bạn, sau đó bạn có thể đặt ngón tay cái trong mã với một cái gì đó như:

Drawable thumb = getResources().getDrawable(R.drawable.myThumb); 
SeekBar mSeekBar = (SeekBar) findViewById(R.id.mySeekBar); 
mSeekbar.setThumb(thumb); 

Hoặc bạn có thể đặt ngón tay cái trong XML có:

<SeekBar 
    ... 
    android:thumb="@drawable/seek_thumb" /> 

Bản vẽ thực tế có thể là hình ảnh, hình dạng hoặc bất kỳ loại Drawable nào khác mà bạn có thể mong muốn. Nếu bạn muốn ngón tay cái thay đổi hình dạng khi nó được nhấn, bạn sẽ muốn tạo một State List Drawable.

+0

Tôi muốn sử dụng ngón tay cái mặc định. Tôi chỉ muốn thay đổi màu sắc mà nó thay đổi khi được giữ. –

+0

Thật không may, màu nhấn của ngón tay cái mặc định là một phần của ngón tay cái mặc định. Nếu bạn muốn thay đổi nó, bạn cần phải thực hiện nó cho mình. Tôi đã tìm thấy [hình ảnh mặc định không phải là holo ở đây] (https://github.com/android/platform_frameworks_base/tree/master/core/res/res), vì vậy bạn sẽ có thể sử dụng những hình ảnh đó để có một khởi đầu tốt. –

+0

Đây là một kỹ thuật hữu ích cho một số tình huống, nhưng nó không nhất thiết phải đúng là bạn * có * để tạo Bản vẽ của riêng bạn. Xem câu trả lời của @ zavidovych, cho API 16+. – LarsH

25

lọc Sử dụng hình ảnh để thay đổi màu sắc của mặc định Danh sách nhà nước Drawables (bao gồm SeekBar):

// Change seekbar color to green. 
    SeekBar sb = (SeekBar) findViewById(R.id.seekBar1); 
    sb.getProgressDrawable().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY); 
    sb.getThumb().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY); 

Phương pháp getThumb chỉ có sẵn từ API 16+ (Jelly Bean).

+0

zavidovych, điều này có thể được thực hiện trong xml không? – Brabbeldas

+7

Tìm thấy nó tốt hơn trong trường hợp của tôi để sử dụng 'sb.getProgressDrawable(). SetColorFilter (getResources(). GetColor (R.color.my_color), PorterDuff.Mode.SRC_ATOP);' – CrimsonX

+1

@CrimsonX bạn nên thêm điều này như là một câu trả lời. – MaSza

11

Không cần tạo kiểu bổ sung. Android hỗ trợ nó thông qua xml. Chỉ cần thêm android: thumbTint = "@ color/yourColor" vào thanh tìm kiếm của bạn.

Ví dụ:

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:max="100" 
    android:thumbTint="@color/red" 
    android:progress="0" /> 
+10

Điều gì về api <21? –

+2

@JohnShelley này làm việc cho tất cả các cấp API sử dụng theme AppCompat ... Trong styles.xml: ' ' Trong bố cục: ' ' – Breeno

+0

@Breeno hoạt động, nhưng chỉ dành cho ngón tay cái (trên API cũ). Bạn sẽ tạo kiểu cho phần còn lại của thanh tìm kiếm như thế nào? – Stan