2010-03-17 39 views
8

Có cách nào tôi có thể xóa hình nền thanh trong tiện ích con Android SeekBar không?Android Xóa nền SeekBar

Tôi chỉ muốn hiển thị thanh trượt mà không có thanh tiến trình phía sau thanh trượt.

Remove this

Bất kỳ trợ giúp nào?

Trả lời

4

Tôi đã giải quyết được vấn đề của chính mình.

Để loại bỏ nền, bạn phải tạo một drawable trống và đặt nó vào progressDrawable:

satBar.setProgressDrawable(invisibleBackground); 

Cài đặt nó để null dường như không làm việc.

3

Bạn đã thử setBackgroundDrawable(null) chưa?

+0

Tôi có. Các nền drawable thực sự là đằng sau thanh chính nó. Tôi cần một cách để xóa các thanh (và cũng có thể thay đổi hình ảnh của thanh trượt) – GuyNoir

+0

và làm thế nào tôi có thể khôi phục lại ban đầu sau đó? tks – Paul

+1

@Paul: Trước tiên hãy thử gọi 'getBackground()', lưu kết quả ở đâu đó và sau đó khôi phục nó qua 'setBackgroundDrawable()'. Mặc dù không có tên song song, 'getBackground()' trả về một 'Drawable'. – CommonsWare

2

Một cách để thực hiện việc này là thay đổi màu của thanh tiến trình thành màu nền. Bạn phải sử dụng bố cục tùy chỉnh.

<SeekBar 
    android:layout_width="350px" 
    android:layout_height="25px" 
    android:layout_margin="30px" 
    android:layout_x="60px" 
    android:layout_y="185px" 
    android:id="@+id/seekbar" 
    android:progressDrawable="@drawable/myprogress" 
/> 

Một bố trí tùy chỉnh được đưa ra dưới đây - chơi xung quanh với các màu sắc:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:id="@android:id/background"> 
<shape> 
    <corners android:radius="5dip" /> 
    <gradient 
      android:startColor="#ff9d9e9d" 
      android:centerColor="#ff5a5d5a" 
      android:centerY="0.75" 
      android:endColor="#ff747674" 
      android:angle="270" 
    /> 
</shape> 
</item> 


<item 
android:id="@android:id/progress" 
> 
<clip> 
    <shape> 
     <corners 
      android:radius="5dip" /> 
     <gradient 
      android:startColor="#9191FE" 
      android:centerColor="#9191FE" 
      android:centerY="0.75" 
      android:endColor="#9191FE" 
      android:angle="270" /> 
    </shape> 
</clip> 
</item> 

27

Có một cách đơn giản hơn mà không yêu cầu tạo ra một drawable mới. Đơn giản chỉ cần đặt sau đây trong định nghĩa xml của bạn

android:progressDrawable="@android:color/transparent" 

Hoặc nếu bạn muốn làm điều đó trong mã của bạn:

mySlider.setProgressDrawable(new ColorDrawable(android.R.color.transparent)); 
+0

Giải pháp tốt hơn giải pháp của @GuyNoir ở trên đòi hỏi một "không thể vẽ được" giả tạo được tạo ra – Guy

+0

Chỉ cần lưu ý: bạn không thể sử dụng # 0000, nhưng sử dụng @android: công việc màu/trong suốt. – sidon

+0

Nhưng điều này loại bỏ các đường ngang cũng trên chủ đề ánh sáng holo. Tôi muốn giữ điều đó. – lalitm

0

tạo ra một tập tin xml seekbar_progress.xml và đặt nó trong drawable sọc folder.Here là một hình ảnh, chụp ảnh và đặt nó trong thư mục drawable.

seekbar_progress.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item> 
    <clip> 
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
     android:src="@drawable/stripes" 
     android:tileMode="repeat" 
     android:antialias="true" 
     android:dither="true" 
     android:filter="false" 
     android:gravity="left" 
    /> 
    </clip> 
</item> 
</layer-list> 

Bây giờ trong main xml tập tin của bạn cũng được có mã seekbar, có một hình ảnh và lưu trữ trong drawable folder.here seekbar là một hình ảnh.

<SeekBar 
      android:id="@+id/seekbar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/seekbar" 
      android:progressDrawable="@drawable/seekbar_progress"/> 
Các vấn đề liên quan