26

Android アプリをもう少しスタイリッシュにしようとしていますが、ある程度の進歩はありましたが、スピナーのドロップダウンが問題を引き起こしています。問題を示すスクリーンショットがあります。

白い背景を取り除く方法

私が望むのは、ドロップダウンの外側の画面の残りの部分と同じ灰色のオーバーレイのように、背景の白いボックスを透明にすることです。

私の記憶が正しければ、Android 4.0、API 15。

要求されたように、これまでのところ私がそれを行う方法は次のとおりです。これらは関連性があると思われるスニペットですが、何かを見落としている可能性があります。

スピナーのxmlは次のとおりです。

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

私のvalues/style.xmlで。ここで背景の色を変更すると、ダイアログの背景が変更されますが、残りの背景もすべて変更されます。ドロップダウン ダイアログで背景を変更する方法がわかりません。

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

これをアプリのテーマに追加しようとしましたが、どれも違いはなく、背景はまだ白でした.

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

drawable/pink_white_dropdown では、すべてのケースで同じ画像を表示しています。pink_white_arrow は私が作った 9patch 画像です。ガイドはたくさんありますが、Google で 30 秒以内に見つけたガイドを次に示します。

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

これらのファイルのどこかで、何かを透明にする必要があると思いますが、どこかわかりません。

4

4 に答える 4

54

SpinnerStyle背景属性を削除します。

これを削除します:

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

これは、背景の白い四角形を描画するものです。

質問のコードに基づいて、Spinner のスタイルを設定する方法の基本的な例を次に示します。

このファイルはおよびstyles.xmlのスタイルを設定します。SpinnerItemSpinnerDropDownItem

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

テスト用に、 という明るい色のドローアブル シェイプを作成しましたmy_rectangle.xml。これを独自のドローアブルに置き換えます。

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

をレイアウトに追加しSpinnerます。Activity's

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

これにより、次が生成されます。

ここに画像の説明を入力

背景に白い四角がありません。

于 2012-12-16T14:42:24.913 に答える
2

追加

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

あなたのスピナースタイルに。

于 2012-12-06T07:40:26.400 に答える
0

I had the same problem, and the below code worked for me:

<item name="android:popupBackground">@null</item> 
于 2013-09-06T22:44:46.330 に答える