我正在尝试让我的Android应用程序更加时尚,并取得了一些进展但是微调器下拉让我遇到麻烦。我有截图给你看问题:
我想要的是背景中的白色框是透明的,就像在后面屏幕上的灰色覆盖图一样,在下拉列表外面的屏幕的其余部分。
Android 4.0,API 15,如果我没记错的话。
根据要求,到目前为止我是如何做到这一点的。这些是我认为相关的片段,但我可能错过了一些内容。
这是spinner的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图像。有很多指南here's one I found by 30sec on 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>
在这些文件中的某个地方,我认为某些东西应该透明,但我不知道在哪里。
答案 0 :(得分:50)
删除SpinnerStyle
背景属性。
删除它:
<style name="spinnerStyle">
<item name="android:background">@drawable/whitish_rectangle</item>
</style>
是绘制背景白色矩形的原因。
根据您问题中的代码,这是一个关于如何设置Spinner样式的基本示例:
styles.xml
文件为SpinnerItem
和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>
为了进行测试,我创建了一个鲜艳的可绘制形状,称为my_rectangle.xml
。将其替换为您自己的drawable:
<?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>
这会产生:
背景中没有白色方块。
答案 1 :(得分:1)
添加
<item name="android:popupBackground">@null</item>
你的微调风格。
答案 2 :(得分:0)
我遇到了同样的问题,以下代码对我有用:
<item name="android:popupBackground">@null</item>
答案 3 :(得分:0)
Spinner Widget需要两种不同的自定义布局,一种用于显示视图,另一种用于下拉列表!
在此示例中,有关自定义微调器Android的博客,我们将指导您如何在android studio中创建自定义微调器,该工具将具有: