#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