2014-05-12 13 views
5

Xin chào Tôi đang cố gắng thêm dấu trái ở Spinner nhưng tôi không tìm thấy bất kỳ sự phù hợp nào cho điều này giống như bạn làm trong EditText sử dụng android:drawableLeft="@drawable/password_drawable". Có cách nào đúng để đạt được tương tự trong Spinner trong Android không.Cách thêm hình vẽ có thể vẽ trái trong Chế độ xem Spinner trong Android

đây trong trường hợp của tôi có nên để drawable chỉ trạng thái này mà tôi đã đưa ra trong hình, khi người dùng nhấp chuột vào Spinner Tôi không muốn có thể vẽ lại có trong danh sách thả mở xuống trong Spinner

tôi đang cố gắng như thế này mà không có thuộc tính như vậy

<Spinner 
    android:id="@+id/selectSpinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="@dimen/sign_up_views_vertical_top_margin" 
    android:background="@drawable/edittext_border" 
    /> 

tôi muốn một cái gì đó như dưới đây screenshot

enter image description here

Hiện nay nó đang tìm kiếm như dưới đây

enter image description here

và khi tôi đặt nền của Spinner thì có vẻ như

<Spinner 
    android:id="@+id/selectSpinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="@dimen/sign_up_views_vertical_top_margin" 
    android:background="@drawable/selectone_drawable" 
    android:entries="@array/select_type" /> 

enter image description here

Cảm ơn trước

+0

Bạn có thể đặt nền cho spinner. android: background = "@ drawable/your_drawable" – Sripathi

+0

@Sripathi Nó không hoạt động, thiết lập nền không phải là cách IMO vì nó đặt hình nền này trên hoàn thành spinner –

+0

Bây giờ bạn đang đặt khối mũi tên một mình làm nền bên phải (hộp có chứa một mũi tên xuống)? Sử dụng chín bản vá, nếu không bạn có thể thay đổi hình ảnh png của bạn thành một hộp (như edittext) có hình vuông ở đầu bên trái (bố cục spinner bạn muốn). – Sripathi

Trả lời

4

Tạo một hình ảnh chín vá và đặt nó làm nền của Spin ner, sau đó thêm một padding trái, nên làm các trick.

+0

Không, nó không hoạt động đối với tôi, xem câu hỏi được cập nhật của tôi Tôi đã thêm ảnh chụp màn hình –

+2

Tạo hình ảnh chín vá và đặt làm nền. Sau đó, nó sẽ làm việc. –

+0

Sẽ làm điều đó cho bạn khi tôi về nhà, không thể làm việc đó ngay bây giờ. Hoặc bạn có thể tự mình thực hiện bằng cách thực hiện một số nghiên cứu về hình ảnh chín bản vá, nó thực sự hữu ích trong bất kỳ dự án Android nào :) –

2

Như đánh dấu đã nói, bạn nên đặt hình ảnh dưới đây làm nền của trình quay tròn và yêu cầu đệm trái để văn bản sẽ ngay sau hình mũi tên.

enter image description here

Sau đây là một số mã để làm cho bạn hiểu thêm;)

<Spinner 
    android:id="@+id/selectSpinner" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="@dimen/sign_up_views_vertical_top_margin" 
    android:background="@drawable/the_attached_drawable" 
    android:paddingLeft="@dimen/required_padding_for_each_screen_size" 
    android:entries="@array/select_type" /> 
+0

+1 Cảm ơn bạn Câu trả lời hay, nó đã hoạt động :) –

9

tạo ra một drawable xml @ drawable/gradient_spinner '

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item><layer-list> 
     <item><shape> 
      <gradient android:angle="90" android:endColor="@color/myTextPrimaryColor" android:startColor="@color/myTextPrimaryColor" android:type="linear" /> 

      <stroke android:width="1dp" android:color="@color/bg_eo" /> 

      <corners android:radius="4dp" /> 

      <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" /> 
     </shape></item> 
     <item ><bitmap android:gravity="right|center" android:src="@drawable/expnd" /> 
     </item> 
    </layer-list></item> 

</selector> ` 

bộ nền spinner android: background = "@ drawable/gradient_spinner"

+0

Cảm ơn bạn! Điều này làm việc cho tôi, sau khi thay đổi lực hấp dẫn thành 'trái | trung tâm'. :) –

1

Hãy thử điều này,

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      if(view!=null) { 
       ((TextView) view).setPadding(0, 0, 0, 0);//remove extra padding 
       ((TextView)view) .setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(context, R.drawable.your_image), null, null, null); 
       ((TextView) view).setCompoundDrawablePadding(20);// to set drawablePadding 
      } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 

     } 
    }); 
0

layout looks like this

dummy.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <layer-list android:opacity="transparent"> 
      <item android:gravity="left" android:width="100dp" 
      android:end="300dp"> 
       <shape> 
        <solid android:color="#269cf7"> 

        </solid> 
       </shape> 
      </item> 
      <item android:gravity="right" android:width="300dp" android:start="100dp"> 
       <shape> 
        <solid android:color="@color/transparent"> 

        </solid> 
       </shape> 
      </item> 
      <item android:width="100dp" android:end="300dp"> 
       <bitmap android:src="@drawable/arrow_bottom" android:gravity="center"/> 
      </item> 
     </layer-list> 
    </item> 
</selector> 

trong file bố trí thêm mã này

<android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:cardUseCompatPadding="true" 
     app:cardElevation="5dp"> 
    <Spinner 
     android:layout_width="match_parent" 
     android:layout_height="100dp" 
     android:background="@drawable/dummy"> 

    </Spinner> 
    </android.support.v7.widget.CardView> 
Các vấn đề liên quan