2010-10-27 5 views
7

Mam spinner z arrayadapter, który jest zarządzany dynamicznie. po wyświetleniu tekstu pokrętła wyświetlany jest również przycisk opcji. jak mogę się pozbyć tego przycisku radiowego? strzałka z rozwijanego menu jest wzmocniona i obrzydliwa ... to mój problem. UWAGA: nie mówię o przyciskach radiowych, które pojawiają się na liście, która jest wyświetlana po wybraniu rozwijanego menu na tarczy.dlaczego mój android spinner wyświetla przycisk radiowy w tekście?

oto kod odpowiedni fragment ... kilka punktów:

  • ten kod jest w konstruktorze widget, który jest podklasą Spinner
  • wartość jest tablicą instancji obiektów (po przekazywane widget zostanie utworzony)
  • brak zasobów XML; wszystkie widżety są tworzone dynamicznie
  • myślę, że muszę "manipulować" monitem, dodałem funkcję setPrompt (...) w konstruktorze, a także w detektorze zdarzeń onitemclicked ... nie miało to żadnego efektu.

P: czego mi brakuje? wydaje mi się, że brakuje mi jakiegoś atrybutu Spinner, który powoduje, że przycisk radiowy wyświetla się również w części tekstowej tarczy.

- ciach kodu -

public class ChoiceGroupImpl extends Spinner implements OnItemSelectedListener { 
    public ChoiceGroupImpl(Activity activity, WidgetContainer container, Value widget, AttributeImpl attributes, Object[] value, int selected) { 
... 
     adapter = new ArrayAdapter<CharSequence>(activity, R.layout.simple_spinner_dropdown_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     for (int i = 0; i < value.length; i++) 
      adapter.add(value[i].toString()); 
     if (attributes.isReadonly()) 
      setEnabled(false); 
     setAdapter(adapter); 
     setSelection(selected); 
     setPrompt(adapter.getItem(selected)); 
     setOnItemSelectedListener(this); 
... 
} 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     setPrompt(adapter.getItem(position)); 
     ((ToolkitImpl) Toolkit.getInstance()).hiddenCommand(container, "SelectionChanged"); 
    } 
... 

- koniec kod Ciach -

+0

Oh! BTW: Nie przesłonię żadnego z układów widoku, metod rysowania. –

Odpowiedz

15

użycie simple_spinner_item zamiast simple_spinner_dropdown_item podczas tworzenia adapter

adapter = new ArrayAdapter<CharSequence>(activity, R.layout.simple_spinner_item); 
+1

Ah! to zrobiło! wydaje się dość proste, nic dziwnego, że go nie zauważyłem! THX –

+2

ok, następnie zaakceptuj odpowiedź. – franklins

+0

thanx fab świetna odpowiedź ... –

18

Jeśli chcesz zachować radia przycisk w pokrętle, ale nie w widoku tekstowym, a następnie wykonaj to:

adapter = new ArrayAdapter<CharSequence>(activity, android.R.layout.simple_spinner_item); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+1

To jest bardziej kompletne rozwiązanie, IMO. – Ken

+0

whell done to odpowiada na niektóre z moich myśli. świetna odpowiedź. – John

+0

Problem z tym rozwiązaniem polega na zaznaczeniu pola wyboru podczas podświetlania onClick –