2011-04-18 68 views
1

我需要在android中使用样式实现应用程序。我知道,为styles.xml中的每个对象定义样式,可以为Textview,Buttons,editviews ..提供不同的样式,但在spinner的特殊情况下它不起作用。这是我的例子:在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文件的情况下实现样式,我能做什么?我需要改变的微调选择,backgound的颜色,添加一些图片..等非常感谢您的帮助

+0

您正在覆盖样式中定义的值。请更具体和明确你想要达到的目标。 – 2011-04-18 13:27:04

+0

对于覆盖代码感到抱歉,我想在不改变* .java代码的情况下设计一个微调器,listview等等(我的意思是改变选项的颜色,背景等),因为我知道可以改变微调器的风格编程,但我只想使用样式。 – David 2011-04-18 14:03:53

回答

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