2014-05-12 56 views
5

您好,我正在嘗試添加左繪圖在Spinner中,但是我沒有找到任何這方面的技巧,因爲您在EditText中使用android:drawableLeft="@drawable/password_drawable"做了同樣的操作。 Android中的Spinner有沒有正確的方法可以實現?如何在Android的Spinner View中添加左繪圖

在這裏,在我的情況下,應該留給繪製僅此狀態下,我的截圖,當上了微調用戶點擊我不想給我們留下繪製有開放式下拉列表中Spinner

了我想這樣的地方沒有這樣的屬性

<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" 
    /> 

我想要的東西,像下面的截圖

enter image description here

目前,它看起來像下面

enter image description here

,當我設置Spinner的背景那麼它看起來提前

+0

您可以設置爲微調的背景。 android:background =「@ drawable/your_drawable」 – Sripathi

+0

@Sripathi它沒有工作,設置背景不是一種方式國際海事組織,因爲它在完整微調器上設置此背景圖像 –

+0

現在,您將箭頭塊單獨設置爲背景右該框包含向下箭頭)? 使用九個補丁,否則你可以改變你的PNG圖像作爲一個框(如edittext)在左邊的一個正方形(你想要的微調佈局)。 – Sripathi

回答

4

創建像

<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

謝謝一個九貼片圖像並將其設置爲Spin的背景ner,然後添加一個左邊的填充,應該做的伎倆。

+0

不,它沒有爲我工作,看到我更新的問題,我添加了屏幕截圖 –

+2

創建一個九個補丁的圖像,並將其設置爲背景。那麼它應該工作。 –

+0

當我回家時會爲你做,現在無法在工作中做到。或者你可以嘗試自己做一些關於九貼片圖像的研究,它對任何Android項目都非常有用:) –

2

作爲標記說,你應該把下面的圖像作爲微調的背景,並採取必要的左填充,使文本將在箭頭圖像後。

enter image description here

以下是一些代碼來讓你明白更多;)

<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謝謝你好的答案,它的工作:) –

9

創建一個XML繪製@繪製/ 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> ` 

集微調背景的android:背景=「@ drawable/gradient_spinner」

+0

謝謝!這在改變重力到'left | center'之後對我很有用。 :) –

1

試試這個,

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> 

在佈局文件中添加以下代碼

<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>