Czy można zainstalować Tooltip Spinner w systemie Android?


Czy jest w ogóle możliwe, aby podpowiedź obrotowa była podobna do podpowiedzi dostępnej przy edycji pól tekstowych? Wiem, że możesz skorzystać z zachęty, która daje pasek tytułu, ale nadal pozostawia puste pole początkowe pokrętła, dopóki nie klikniesz pokrętła. Obecnie mam prymitywny sposób, aby ustawić pole fikcyjne jako pierwszą część tablicy przędzarki, co jest pytaniem, a następnie sprawdzić na końcu, czy spinner nie jest równy ciągowi pytań. Czy jest na to lepszy/lepszy sposób?
Podziękować!
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oto rozwiązanie, które jest prawdopodobnie trochę prostsze niż kod Raviego Vyasa (dzięki za inspirację!):
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item) { @Override
public View getView(int position, View convertView, ViewGroup parent) { View v = super.getView(position, convertView, parent);
if (position == getCount()) {
((TextView)v.findViewById(android.R.id.text1)).setText("");
((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount()));//"Hint to be displayed"
} return v;
} @Override
public int getCount() {
return super.getCount()-1;// you dont display last item. It is used as hint.
}};adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.add("Item 1");
adapter.add("Item 2");
adapter.add("Hint to be displayed");spinner.setAdapter(adapter);
spinner.setSelection(adapter.getCount());//display hint
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz dostosować swój własny adapter typu spinner i nadpisać metodę getView, aby zamiast elementu wyświetlać podpowiedź. Stworzyłem przykładowy projekt na githubie, sprawdź tutaj
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeszcze łatwiejszym sposobem niż skonfigurowanie własnego adaptera obrotowego jest użycie przycisku i nadanie mu stylu przypominającego obiekt typu spinner
android:background="@android:drawable/btn_dropdown"

Następnie skonfiguruj zdarzenie onClick przycisku, aby otworzyć okno dialogowe wyboru pojedynczego elementu. Następnie możesz zrobić, co chcesz, z tekstem przycisku.
To był mój ulubiony sposób radzenia sobie z tym od jakiegoś czasu. Mam nadzieję, że to komuś pomoże.

EDIT:

Niedawno znowu się tym bawiłem (i jakiś czas temu ktoś poprosił mnie o zamieszczenie przykładu). Ta strategia będzie wyglądać nieco inaczej, jeśli używasz motywu Holo. Jeśli jednak używasz innych motywów, takich jak Theme.Black, będzie wyglądać identycznie.
Aby to zademonstrować, stworzyłem prostą aplikację, która ma zarówno zwykły Spinner, jak i mój niestandardowy przycisk Spinner. Wrzuciłem to

repozytorium
https://github.com/sberg413/SpinnerButton
GitHub, ale tak wygląda to działanie:
package com.stevebergamini.spinnerbutton;import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Spinner;public class MainActivity extends Activity { Spinner spinner1;
Button button1;
AlertDialog ad;
String[] countries; int selected = -1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); spinner1 = (Spinner) findViewById(R.id.spinner1);
button1 = (Button) findViewById(R.id.button1); countries = getResources().getStringArray(R.array.country_names);// You can also use an adapter for the allert dialog if you'd like
// ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, countries); ad = new AlertDialog.Builder(MainActivity.this).setSingleChoiceItems(countries, selected,
new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) {
button1.setText(countries[which]);
selected = which;
ad.dismiss(); }}).setTitle(R.string.select_country).create();
button1.setOnClickListener( new OnClickListener(){ @Override
public void onClick(View v) {
ad.getListView().setSelection(selected);
ad.show();
}}); }
}

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się