在Spinner中改变样式的问题

时间:2011-04-18 13:22:07

标签: android coding-style spinner

我需要在android中使用样式实现一个应用程序。我知道,在styles.xml中为每个对象设置一个样式,可以为以下内容建立不同的样式:Textview,Buttons,editviews ..但在spinner的特殊情况下,它不起作用。这是我的例子:

这是布局main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

    >
<TextView  
    style="@style/TextviewVerde" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:text="@string/escribenombre"
    />
<EditText
    style="@style/EditviewAzul"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:id="@+id/TxtNombre" 

    />
<Spinner
    style="@style/SpinnerRojo"
    android:textColor="#FFFFFF"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:id="@+id/TxtSpinner"
    android:prompt="@string/seleccionetexto" 

/>
<Button
    style="@style/BotonBlanco"
    android:id="@+id/BtnHola" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:text="Pulse aqui"  
    />   

</LinearLayout>

这是styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="TextviewVerde" >
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">normal</item>
        <item name="android:textSize">5pt</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>

    <style name="TextviewRosa" >
        <item name="android:textColor">#5F04B4</item>
        <item name="android:typeface">normal</item>
        <item name="android:textSize">15pt</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
    </style>

    <style name="EditviewAzul"  >
        <item name="android:textColor">#0000FF</item>
        <item name="android:textSize">8pt</item>
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:shadowColor">#0000FF</item>       
    </style>

    <style name="SpinnerRojo"  > 
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#DF0101</item>
        <item name="android:gravity">center</item>
        <item name="android:typeface">normal</item>
        <item name="android:textSize">11pt</item>
        <item name="android:drawSelectorOnTop">true</item>

    </style>

    <style name="BotonBlanco">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textSize">12pt</item>
        <item name="android:gravity">center_vertical|center_horizontal</item>
        <item name="android:textColor">#FFFFFF</item>
        <item name="android:shadowColor">#FF000000</item>
        <item name="android:clickable">true</item>     
     </style>

</resources>

每个对象都运行良好,但微调器不会改变其外观。我的老板告诉我,我必须在不更改* .java文件的情况下实现样式,我该怎么办?我需要改变微调器选项的颜色,背景,添加一些图片等等。非常感谢你的帮助

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

要在单击微调器时创建自定义样式下拉列表,您应创建一个自定义适配器,其中包含对定义列表行的布局xml的引用。

例如:

String[] elements = {"optionA", "optionB"};
Spinner s = (Spinner) findViewById(R.id.your_spinner_id);
ArrayAdapter adapter = new ArrayAdapter<String>(this,
R.id.textViewId, elements);
adapter.setDropDownViewResource(R.layout.your_dropdown_layout);

textViewId应该是your_dropdown_layout中的子视图。

希望有所帮助。

Ripityom