Oggetto spinner Android semplice

questa domanda si riferisce a questo: android.R.simple_spinner_item

Poiché non posso commentare a causa della scarsa reputazione, ho una domanda aggiuntiva:

Se copio e incolla il layout android.R.simple_spinner_item, viene visualizzato un errore

android:layout_height="?android:attr/dropdownListPreferredItemHeight" 

dicendo “errore: Errore: l’attributo non è pubblico. (a ‘layout_height’ con valore ‘? android: attr / dropdownListPreferredItemHeight’).”

Ho appena aggiunto android:gravity="right" per ottenere l’allineamento spinner_item sul lato destro.

Come posso risolvere questo errore?

    Sembra funzionare per me se non lo prefissi con Android, in questo modo:

      

    allora dovrai progettarlo.

    layout / my_spinner_textview.xml

      < ?xml version="1.0" encoding="utf-8"?>  

    ed è così che ho impostato l’adattatore

      private String[] state= {"Andra Pradesh","Arunachal Pradesh","Assam","Bihar","Haryana","Himachal Pradesh", "Jammu and Kashmir", "Jharkhand","Karnataka", "Kerala","Tamil Nadu"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); ArrayAdapter adapter_state = new ArrayAdapter(this, R.layout.my_spinner_textview, state); adapter_state.setDropDownViewResource(R.layout.my_spinner_textview); Spinner spinner=(Spinner)findViewById(R.id.spinner1); spinner.setAdapter(adapter_state); } 

    Puoi utilizzare solo le risorse di Android (temi o attributi) che sono definite come pubbliche da System.

    Come attr "?android:attr/dropdownListPreferredItemHeight" non è pubblico, non è ansible utilizzarlo.

    Invece, puoi usare

    android:layout_height="wrap_content"

    per il layout degli oggetti di Spinner.

    Un’altra soluzione potrebbe essere quella di copiare le risorse da SDK nel progetto e quindi utilizzarle nel progetto.

     android:layout_width="match_parent" android:layout_height="48dp" 

    Crea un layout personalizzato con questi attributi. Potresti voler tematizzare in seguito.

    Questa risorsa è privata, quindi solo la libreria da cui proviene questo attributo può utilizzarla. Quindi devi ottenere la dimensione di questo attributo e crearlo nella tua app. Dal codice sorgente: https://android.googlesource.com/platform/frameworks/support/+/50fe5ec/appcompat/res/values/themes.xml

    possiamo vedere alle linee 50 e / o 84 l’attributo lì. Quindi nel tuo file dimens.xml puoi scrivere:

    64dip

    e quindi fare riferimento come se fosse una risorsa normale:

    android:layout_height="@dimen/dropdownListPreferredItemHeight"