проблема с изменением стиля в Spinner

#android #coding-style #spinner

#Android #стиль кодирования #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>
  

каждый объект работает хорошо, но spinner не меняет свой внешний вид. Мой босс сказал мне, что я должен реализовать стили без изменения файла * .java, что я могу сделать?? мне нужно изменить цвет опций spinner, backgound, добавить несколько фотографий .. и т.д. Большое спасибо за помощь

Комментарии:

1. Вы перезаписываете значения, которые вы определили в стиле. Пожалуйста, будьте более конкретными и ясными в отношении того, чего вы хотите достичь.

2. извините за перезапись кода, я хотел бы изменить стиль spinner, listview и т.д. (я имею в виду, изменить цвет опций, фона и т.д.) Без изменения кода *.java, потому что я знаю, что стиль spinner можно изменить программно, но я хочу использовать только стили.

Ответ №1:

Комментарии:

1. Thane Anthem, спасибо, это хороший ответ, но я не хочу менять только нижнюю часть блесны, я также хочу изменить внешний вид диалогового окна блесны (список опций, который появляется, когда я нажимаю на нижнюю часть блесны). что я мог сделать??

Ответ №2:

Чтобы создать выпадающий список в пользовательском стиле при нажатии на spinner, вы должны создать пользовательский адаптер со ссылкой на ваш макет 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