studio permission permisos internet intent example editar descargar androidmanifest android android-layout android-spinner

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.