Pertanyaan Gaya spinner android


Saya mencoba untuk mendapatkan aplikasi Android saya sedikit lebih bergaya dan telah membuat beberapa kemajuan tetapi dropdown pemintal memberi saya kesulitan. Saya punya tangkapan layar untuk menunjukkan masalahnya kepada Anda:

How do I get rid of the white background

Yang saya inginkan adalah kotak putih di latar belakang menjadi transparan, seperti pada hamparan abu-abu yang sama di atas layar belakang sebagai sisa layar di luar dropdown.

Android 4.0, API 15 jika saya ingat dengan benar.

Seperti yang diminta di sini adalah bagaimana saya melakukannya sejauh ini. Ini adalah potongan yang menurut saya relevan tapi saya mungkin melewatkan sesuatu.

Inilah xml untuk spinner:

<Spinner
    android:id="@+id/edit_countrySpinner"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:entries="@array/edit_countryArray"
    android:gravity="center"
    android:prompt="@string/country_prompt" />

Di nilai / style.xml saya. Jika saya mengubah warna latar belakang di sini, latar belakang dialog berubah, tetapi semua latar belakang lainnya juga. Saya belum tahu bagaimana caranya mengubah latar belakang dalam dialog dropdown.

<style name="appcin" parent="@android:style/Theme.NoTitleBar.Fullscreen">
    <item name="android:spinnerStyle">@style/spinnerStyle</item>
    <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
    <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item> -->
    <item name="android:background">#FFFFFF</item>
</style>
<style name="spinnerStyle">
    <item name="android:background">@drawable/pink_white_dropdown</item>
    <item name="android:clickable">true</item>
</style>
<style name="SpinnerItem">
    <item name="android:textColor">#993399</item>
    <item name="android:background">@drawable/pink_white_dropdown</item>
    <item name="android:maxHeight">10dip</item>
</style>
<style name="SpinnerDropDownItem">
    <item name="android:textColor">#993399</item>
    <item name="android:background">#FFFFFF</item>
</style>

Saya sudah mencoba menambahkan ini ke tema aplikasi tetapi tidak ada yang membuat perbedaan, latar belakang masih putih.

<...theme....>
   <item name="android:dropDownListViewStyle">@style/DropDownStyle</item>
   <item name="android:dropDownSpinnerStyle">@style/DropDownStyle</item>
   <item name="android:dropDownSelector">@style/DropDownStyle</item>
</... theme ...>
<style name="DropDownStyle">
    <item name="android:background">#FFF000</item>
    <item name="android:popupBackground">#FFF000</item>
    <item name="android:cacheColorHint">#FFF000</item>
</style>

Dalam drawable / pink_white_dropdown, hanya menunjukkan gambar yang sama untuk semua kasus. pink_white_arrow adalah gambar 9patch yang saya buat. Ada banyak panduan, inilah yang saya temukan dengan 30 detik di google.

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_window_focused="false" android:state_enabled="true"
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_window_focused="false" android:state_enabled="false"
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_pressed="true" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_pressed="false" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_focused="true" android:state_enabled="true" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_enabled="true" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item android:state_focused="true" 
      android:drawable="@drawable/pink_white_arrow"/>
  <item 
      android:drawable="@drawable/pink_white_arrow"/>
</selector>

Di suatu tempat di file-file ini saya pikir sesuatu harus dibuat transparan, tapi saya tidak tahu di mana.


21
2017-12-04 12:45


asal


Jawaban:


Hapus SpinnerStyle atribut latar belakang.

Pindahkan ini:

<style name="spinnerStyle">
    <item name="android:background">@drawable/whitish_rectangle</item>
</style>

itulah yang menggambar persegi panjang putih latar belakang.

Membangun kode dalam pertanyaan Anda, berikut ini adalah contoh dasar tentang bagaimana Anda dapat menata Spinner Anda:

Itu styles.xml set file gaya untuk SpinnerItem dan SpinnerDropDownItem:

<resources>
    <style name="customtheme" parent="@android:style/Theme.Light">
        <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
        <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
    </style>
    <style name="SpinnerItem">
        <item name="android:textColor">#993399</item>
        <item name="android:background">@drawable/my_rectangle</item>
    </style>
    <style name="SpinnerDropDownItem">
        <item name="android:textColor">#993399</item>
        <item name="android:background">@drawable/my_rectangle</item>
    </style>
</resources>

Untuk pengujian, saya telah membuat bentuk yang dapat ditarik berwarna cerah, yang disebut my_rectangle.xml. Ganti ini dengan drawable Anda sendiri:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#ff0000" />
    <stroke
        android:width="1dp"
        android:color="#888888" />
</shape>

Tambahkan Spinner ke Activity's tata letak:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:padding="40dip">
    <Spinner
        android:id="@+id/edit_countrySpinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/location_names"/>
</LinearLayout>

Ini menghasilkan:

enter image description here

tanpa kotak putih di latar belakang.


49
2017-12-16 14:42



menambahkan

<item name="android:popupBackground">@null</item>

untuk gaya pemintal Anda.


1
2017-12-06 07:40



Saya memiliki masalah yang sama, dan kode di bawah ini berhasil untuk saya:

<item name="android:popupBackground">@null</item> 

0
2017-09-06 22:44