permission - permisos android studio
Elemento de giro simple de Android (5)
esta pregunta se relaciona con esta: android.R.simple_spinner_item
Como no puedo hacer comentarios debido a mi baja reputación, tengo una pregunta adicional:
Si copio y pego el diseño de android.R.simple_spinner_item, obtengo un error en
android:layout_height="?android:attr/dropdownListPreferredItemHeight"
diciendo "error: Error: el atributo no es público. (en ''layout_height'' con valor ''? android: attr / dropdownListPreferredItemHeight'')".
Acabo de agregar android:gravity="right"
para obtener la alineación spinner_item en el lado derecho.
¿Cómo puedo solucionar este error?
Este recurso es privado, por lo que solo la biblioteca de la que proviene ese atributo puede usarlo. Por lo tanto, debe obtener el tamaño de este atributo y crearlo dentro de su aplicación. Desde el código de origen: https://android.googlesource.com/platform/frameworks/support/+/50fe5ec/appcompat/res/values/themes.xml
Podemos ver en las líneas 50 y / o 84 el atributo allí. Así que en tu archivo dimens.xml puedes escribir:
<dimen name="dropdownListPreferredItemHeight">64dip</dimen>
y luego haga una referencia como si fuera un recurso normal:
android:layout_height="@dimen/dropdownListPreferredItemHeight"
Parece que funciona para mí si no lo prefieres con Android, así:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="?attr/dropdownListPreferredItemHeight"
android:ellipsize="marquee"/>
Solo puede usar los recursos de Android (temas o atributos) que están definidos como públicos por el Sistema.
Como attr "?android:attr/dropdownListPreferredItemHeight"
no es público, no puede usar eso.
En su lugar, puedes usar
android:layout_height="wrap_content"
para el diseño del elemento Spinner.
Otra solución puede ser copiar los recursos del SDK a su proyecto y luego usarlos en su proyecto.
entonces tendrás que diseñarlo.
layout / my_spinner_textview.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerItemStyle"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:gravity="right" />
Y así es como configuro el adaptador.
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<String> adapter_state = new ArrayAdapter<String>(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);
}
android:layout_width="match_parent"
android:layout_height="48dp"
Crea un diseño personalizado con estos atributos. Es posible que desee tema más tarde.