Spinner nie zawija tekstu - czy to błąd Androida?
Jeśli tekst Spinner
jest zbyt długi, aby zmieścić się w jednej linii, tekst nie jest zawinięty, ale odcięty. Jest to tylko przypadek dla poziomu API >= 11. Oto screeny z Androida 4.2.2 (lewej), co pokazuje niewłaściwe zachowanie i 2.3.3 (prawo) tam, gdzie wygląda to zgodnie z oczekiwaniami.
android:singleLine="false"
po prostu zostaje tu zignorowany. Tak jak wszystkie inne próby jak android:lines
, android:minLines
, itd. TextView
jakoś wydaje się być znacznie szersza niż szerokość okna.
Widziałem innych ludzi mających ten sam problem, ale nikt nie mógł znaleźć rozwiązania. To błąd systemowy? Nie sądzę, aby ta niezgodność między wersjami systemu operacyjnego mogła być zamierzona.
Uwaga:
Pojawiły się odpowiedzi sugerujące stosunkowo proste rozwiązania.
Zapisanie niestandardowego
Adapter
i nadpisaniegetView()
orazgetDropDownView()
. Nie jest to rozwiązanie tutaj, ponieważ w tym momencie nadal istnieje oryginalny problem: jak musi wyglądać układ, aby poradzić sobie z prawidłowym owijaniem linii?Zawijanie
TextView
widoku rozwijanego do rodzicaViewGroup
. Nie działa zandroid:layout_width="match_parent"
, ponieważ szerokość rodzica dziwnie wydaje się być nieograniczona.Nadanie widoku rozwijanego stałej szerokości. Nie jest to odpowiednie dla różnych szerokości, jakie może mieć
Spinner
.I oczywiście nie ma rozwiązania, aby ręcznie wstawić
\n
s gdziekolwiek w tekst.
]}
UPDATE: wgrałem to również jako przykładowy projekt na GitHub: Pobierz
/ res / wartości / tablice.xml:
<string-array name="items">
<item>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.</item>
<item>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est.</item>
</string-array>
/ res / layout / spinner_item.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="none"
android:minHeight="?android:attr/listPreferredItemHeight"
android:singleLine="false" />
Zestaw Adapter
:
spinner.setAdapter(ArrayAdapter.createFromResource(this,
R.array.items,
R.layout.spinner_item));
14 answers
W holo theme spinner domyślnie używa trybu rozwijanego. A wszystkie ruchy z nadpisywaniem domyślnych stylów po prostu przechodzą do przełączania trybu spinner do trybu dialogowego, który z powodzeniem zawija tekst wielowierszowy, jak w api 11. Zamiast tego możesz utworzyć spinner za pomocą new Spinner(context, Spinner.MODE_DIALOG)
lub w XML: android:spinnerMode="dialog"
. Ale to nie rozwiązuje problemu, ponieważ jest to okno dialogowe, a nie rozwijane.
Znalazłem inne rozwiązanie tego problemu: Override getDropDownView
method in ArrayAdapter
and put setSingleLine(false)
in POST method of view. Więc kiedy widok całkowicie utworzony zawija tekst do odpowiednich linii.
@Override
public View getDropDownView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = new TextView(_context);
}
TextView item = (TextView) convertView;
item.setText("asddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
final TextView finalItem = item;
item.post(new Runnable() {
@Override
public void run() {
finalItem.setSingleLine(false);
}
});
return item;
}
UPDATE:
I oto kolejna odpowiedź.
Ręcznie zawiń listview w PopupWindow i pokaż go pod TextView po kliknięciu i ukryj go po kliknięciu listy.
Prosta implementacja tylko po to, aby pokazać pomysł:
public class MySpinner extends TextView {
private PopupWindow _p;
private ListView _lv;
public MySpinner(Context context) {
super(context);
init();
}
public MySpinner(Context context, AttributeSet attributeSet){
super(context, attributeSet);
init();
}
private void init(){
setBackgroundResource(R.drawable.spinner_background);
final List<String> list = new ArrayList<String>();
list.add("Very long text AAAAAAAAAAAAAAAA");
list.add("1 Very long text AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
list.add("2 Very long text A");
list.add("3 Very long text AAAAAAAAA");
setMinimumWidth(100);
setMaxWidth(200);
_lv = new ListView(getContext());
_lv.setAdapter(new ArrayAdapter<String>(getContext(), R.layout.simple_list_item_1, list));
_lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
_p.dismiss();
setText(list.get(i));
}
});
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
_p = new PopupWindow(getContext());
_p.setContentView(_lv);
_p.setWidth(getWidth());
_p.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
_p.setTouchable(true);
_p.setFocusable(true);
_p.setOutsideTouchable(true);
_p.showAsDropDown(view);
}
});
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-29 02:49:37
Rozwiązałem ten problem przełączając się na okno dialogowe:
<Spinner
...
android:spinnerMode="dialog" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-25 11:17:09
Tylko kombinacja rozwiązań tutaj zadziałała dla mnie (testowane na Androidzie 5.1 też):
Spinner_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:textAlignment="inherit"/>
</LinearLayout>
Kod
final ArrayAdapter<String> spinnerArrayAdapter=new ArrayAdapter<String>(activity,R.layout.spinner_item,android.R.id.text1,spinnerItemsList)
{
@Override
public View getDropDownView(final int position,final View convertView,final ViewGroup parent)
{
final View v=super.getDropDownView(position,convertView,parent);
v.post(new Runnable()
{
@Override
public void run()
{
((TextView)v.findViewById(android.R.id.text1)).setSingleLine(false);
}
});
return v;
}
};
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-23 09:05:37
Osiągnięcie wielu liniowych rozwijanych elementów na Spinner
podczas korzystania z motywu Holo
nie jest możliwe, z tego, co próbowałem.
Rozwiązaniem obejścia problemu jest:
- Utwórz styl dla
Spinner
, który nie dziedziczy poHolo
. Spowoduje to włączenie wielu pozycji rozwijanych. - Zaprojektuj Spinner 'ręcznie' tak, aby wyglądał jak
Holo
- tematycznie.
To daje (pokazując Stany zamknięte i otwarte):
Szczegóły realizacja:
Nie ma możliwości dziedziczenia z Holo
tematu na Spinner
i pokazywania wielu linii w Spinner
rozwijanym elemencie, o ile wiem, nawet jeśli ustawimy rozwijany element TextView
singleLine
atrybut false
i podaj niestandardowy układ. Starałem się również zachować styl Holo
, ale zmienić
android:spinnerStyle
android:spinnerItemStyle
android:spinnerDropDownItemStyle
Atrybuty stylów (przykład użycia tych atrybutów tutaj ), ale nie mogłem sprawić, by dało to wynik wielowierszowy.
Jednakże, jeśli obejdziemy styl dla Spinner
i nie Dziedzicz spinnerStyle
z Holo
:
<style name="AppTheme" parent="android:Theme.Holo.Light">
<item name="android:spinnerStyle">@style/spinnerStyle</item>
</style>
<--no parent attribute-->
<style name="spinnerStyle">
<item name="android:clickable">true</item>
</style>
Następnie rozwijany element będzie obsługiwał wyświetlanie wielu linii. Ale teraz straciliśmy Holo
temat na Spinner
i stan zamknięty wygląda jak TextView
, a nie Spinner
bez strzałki lub wizualnej wskazówki to jest Spinner
. Jeśli zamiast tego ustawimy spinnerStyle
rodzica na: parent="android:style/Widget.Spinner
:
<style name="spinnerStyle" parent="android:style/Widget.Spinner">
<item name="android:clickable">true</item>
</style>
Stan zamknięty Spinner
pokaże strzałkę, ale będzie stylizowany na szary pre-Holo Spinner
, który wygląda nie na miejscu w aplikacji Holo
.
Więc możliwe rozwiązanie jest wtedy:
-
Zastąp motyw dla
spinnerStyle
i nie używajHolo
dla rodzica. spowoduje to włączenie tekstu wielowierszowego w rozwijanych elementach. - Zmień tło
Spinner
, aby wyglądało tak, jakby dziedziczyło motywHolo
.
Oto przykład:
Utwórz podstawowe działanie:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner = (Spinner)findViewById(R.id.styled_spinner);
spinner.setAdapter(ArrayAdapter.createFromResource(this,
R.array.items,
R.layout.spinner_item));
}
Układ aktywności:
<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="50dip"
tools:context=".MainActivity" >
<Spinner
android:id="@+id/styled_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Style:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="android:Theme.Holo.Light">
<item name="android:spinnerStyle">@style/spinnerStyle</item>
</style>
<style name="spinnerStyle">
<item name="android:clickable">true</item>
<item name="android:background">@drawable/spinner_background_holo_light</item>
</style>
</resources>
W folderze drawable, umieść spinner_background_holo_light:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:drawable="@drawable/spinner_disabled_holo_light" />
<item android:state_pressed="true"
android:drawable="@drawable/spinner_pressed_holo_light" />
<item android:state_pressed="false" android:state_focused="true"
android:drawable="@drawable/spinner_focused_holo_light" />
<item android:drawable="@drawable/spinner_default_holo_light" />
</selector>
I umieść te losowania w swoim drawables-hdpi
folderze:
Spinner_default_holo_light.9.png
Spinner_disabled_holo_light.9.png
Spinner_focused_holo_light.9.png
Spinner_pressed_holo_light.9.png
To tworzy spinner z Holo
-tematycznie zamknięty stan i elementy Wielowierszowe, jak pokazano na zrzutach ekranu powyżej.
Elementy rozwijane w tym przykładzie nie są Holo
-tematyczne, ale być może jest to akceptowalny kompromis, jeśli Wielowierszowe wyświetlanie rozwijanych elementów jest naprawdę ważne.
W tym przykładzie android:minSdkVersion
została ustawiona na 14
i android:targetSdkVersion
na 17
w manifeście.
Holo
grafika i kod spinner_background_holo_light.xml
pochodzą z Holoeverywhere Copyright (c) 2012 Christophe Versieux, Sergey Shatunov. Zobacz linked-to github project po szczegóły licencji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:27
Dodanie LinearLayout wokół widoku tekstowego pozwala na poprawne zawijanie tekstu.
Layout (common_domainreferencemodel_spinner_item.xml):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="4dp">
<TextView
android:id="@+id/nameTextView"
android:singleLine="false"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Adapter:
public class DomainReferenceModelAdapter extends ArrayAdapter<DomainReferenceModel> {
private List<DomainReferenceModel> objects;
private LayoutInflater inflater;
private int oddRowColor = Color.parseColor("#E7E3D1");
private int evenRowColor = Color.parseColor("#F8F6E9");
public DomainReferenceModelAdapter(Context context, int resource, List<DomainReferenceModel> objects) {
super(context, resource, objects);
this.objects = objects;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
static class ViewHolder {
public TextView nameTextView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getViewInternal(position, convertView, parent, false);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getViewInternal(position, convertView, parent, true);
}
private View getViewInternal(int position, View convertView, ViewGroup parent, boolean isDropdownView) {
View view = convertView;
if (view == null) {
view = inflater.inflate(R.layout.common_domainreferencemodel_spinner_item, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.nameTextView = (TextView) view.findViewById(R.id.nameTextView);
view.setTag(viewHolder);
}
if (isDropdownView) {
view.setBackgroundColor(position % 2 == 0 ? evenRowColor : oddRowColor);
}
ViewHolder holder = (ViewHolder) view.getTag();
DomainReferenceModel model = objects.get(position);
holder.nameTextView.setText(model.getName());
return view;
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-02 18:08:57
Stanąłem przed tym samym problemem. Chcę zobaczyć 2 linie w rozwijanej liście spinnera, ale wszystkie rozwiązania, które znalazłem wydają mi się nierozsądne, aby rozwiązać taki prosty problem. Zbadałem kod źródłowy spinnera i znalazłem jeśli używamy custom .xml z atrybutem android: singleLine= "false"
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/multiline_spinner_text_view"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:singleLine="false" />
I default ArrayAdapter, po kodzie wykonanym w ListPopupWindow everytime
@Override
View More obtainView(int position, boolean[] isScrap) {
View view = super.obtainView(position, isScrap);
if (view instanceof TextView) {
((TextView) view).setHorizontallyScrolling(true);
}
return view;
}
I dlatego widzimy tylko jedną linię na liście / align = "left" /
Aby rozwiązać ten problem, nasz widok powinien być , a nie instancją TextView, po prostu umieść swój TextView wewnątrz FrameLayout lub LinearLayout.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<CheckedTextView
android:id="@+id/multiline_spinner_text_view"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:singleLine="false" />
</LinearLayout>
I
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.multiline_spinner_dropdown_item,R.id.multiline_spinner_text_view,
awasomeListValues);
To rozwiązanie działa zarówno w trybie spinner: MODE_DROPDOWN jak i MODE_DROPDOWN.Mam nadzieję, że ci to pomoże!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-27 13:47:56
Myślę, że na Androidzie jest błąd. Możesz spróbować tego. Usuń spacje z tekstu, a następnie Wyświetl go będzie działać dobrze. Jeśli długość widoku tekstowego wynosi
Dodaj plik do folderu res / layout o nazwie multiline_spinner_dropdown_item.xml z przykładowym kodem:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="false"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:ellipsize="marquee" />
I kiedy tworzysz spinner utwórz go z tego układu.
Coś w rodzaju :
ArrayAdapter.createFromResource(this, items, R.layout.multiline_spinner_dropdown_item);
Zasadniczo skopiuj Androida.R. layout.simple_spinner_dropdown_item układ do projektu i zmodyfikować układ przez ustawienie singleLine atrybut false W CheckedTextView.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-01 11:20:45
Czytanie tej odpowiedzi: textview casting error: - android.widget.LinearLayout nie może być rzucany na Androida.widget.TextView i w tym temacie, mógłbym rozwiązać ten problem: potrzebujemy LinearLayout owijającego TextView (tekst spinnera), aby uniknąć wydostania się tekstu z ekranu, ale będziemy mieli kilka problemów do rozwiązania. Na początek utwórz układ ( nazwałem go spinner_dd_item.xml):
<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="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/simple_spinner_dropdown"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:textColor="@color/colorAccent"
tools:text="Hello" />
</LinearLayout>
Następnym krokiem jest utworzenie instancji ArrayAdapter, aby ustawić ją na "spinner": {]}
ArrayAdapter<CharSequence> arrayAdapter = new ArrayAdapter<CharSequence>(getActivity(), R.layout.spinner_dd_item,
R.id.simple_spinner_dropdown, hashmapToString(hashMap, keys)) {
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getView(position, convertView, parent);
}
};
spinner.setAdapter(arrayAdapter);
Nie zapomnij dodać nazwy układu i ID TextView na ArrayAdapter, ponieważ dodaliśmy LinearLayout i musimy określić TextView i nadpisać getDropDownView, aby uzyskać widok, który wyświetla dane w określonej pozycji w zestawie danych. Teraz widzimy, że spinner działa dobrze na nowszych i starszych wersjach Androida
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:47
Właśnie odkryłem, że android ma istniejący styl dla tej sprawy
final Spinner pelanggaran = (Spinner) findViewById(R.id.pelanggaran);
ArrayAdapter<CharSequence> pelanggaran_adapter = ArrayAdapter.createFromResource(this,R.array.pelanggaran_array, android.R.layout.simple_expandable_list_item_1);
pelanggaran_adapter.setDropDownViewResource(android.R.layout.simple_expandable_list_item_1);
pelanggaran.setAdapter(pelanggaran_adapter);
Mam nadzieję, że to rozwiązało twój problem.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-16 04:55:13
Miałem ten sam problem i znalazłem rozwiązanie.
Chciałem, aby tekst zawijał się na ekranie początkowym i w widoku rozwijanym.
Tekst zawijał się na wstępnym wyświetlaczu i dla rozwijanego menu znalazłem inne rozwiązanie zalecające użycie niestandardowego widoku układu liniowego ze stałą szerokością otaczającego widok tekstowy. To sprawiło, że lista rozwijana spinnera wyglądała poprawnie, podobnie jak lista początkowego wyboru. Jednak spowodowało to poważny problem na starszych urządzenia.
Początkowe wyświetlanie nie odświeży się, a tekst przybrał ułożony wygląd, jeśli próbowałem wybrać coś innego. a ponieważ układał się w dół, dodanie tła nie pomogło.
Jak się okazuje adaptery mają metodę o nazwie setDropDownViewResource (), która pozwala ustawić inny widok dla rozwijanego menu niż ten, który jest wyświetlany w początkowym zaznaczeniu spinnera.
import org.holoeverywhere.widget.Spinner;
ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,R.array.array_of_strings,R.layout.simple_list_item_1);
adapter1.setDropDownViewResource(R.layout.my_simple_list_item_1);
spQ1.setAdapter(adapter1);
W tym przykładzie simple_list_item jest domyślnym widokiem dostarczanym przez system android and my_simple_list_item is
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/android:text1"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:ellipsize="marquee"
android:layout_gravity="center_vertical"
android:singleLine="false"/>
</LinearLayout>
Teraz tekst zawija się wewnątrz rozwijanego widoku spinnera i w wyświetlanych zaznaczeniach spinnerów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-12 23:10:44
Po prostu zawiń TextView
z LinearLayout
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-16 12:18:35
ArrayAdapter<?> specAdapter =
ArrayAdapter.createFromResource(
getActivity().getBaseContext(),
aa[position],
android.R.layout.select_dialog_item);
specAdapter.setDropDownViewResource(android.R.layout.select_dialog_item);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-28 12:33:24
Oto, co zrobiłem, aby to działało:
ArrayAdapter<KeyValue> adapter = new ArrayAdapter<>(getContext(), R.layout.simple_dropdown_item_multiline, R.id.nameTextView, choices);
A to jest treść "simple_dropdown_item_multiline":
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/nameTextView"
style="?android:attr/dropDownItemStyle"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:paddingBottom="@dimen/large"
android:paddingTop="@dimen/large"
android:singleLine="false"
android:textAppearance="?android:attr/textAppearanceLargePopupMenu"/>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-27 13:49:43
Rozwiązałem ten problem dodając \n (nowy wiersz) w tekście (tak proste).
<string name="bmr1">sedentary (little or no exercise)</string>
<string name="bmr2">lightly active (light exercise/\nsports 1-3 days/week)</string>
<string name="bmr3">moderately active (moderate exercise/\nsports 3-5 days/week)</string>
<string name="bmr4">very active (hard exercise/\nsports 6-7 days a week)</string>
<string name="bmr5">extra active (very hard exercise/sports &\nphysical job or 2x training)</string>
Wygląda tak:
I jest to układ, który spinner używa jako wiersz:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/default_listview_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:background="@android:color/transparent"
android:padding="5dp" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-26 09:40:00