Android Studio: Button siempre aparece en la parte delantera

Tengo un RelativeLayout al que agrego las vistas.

He añadido un botón a él, y el botón siempre aparece delante de todas las otras vistas que se agregan a ella, independientemente del orden en que se agregaron las cosas. ¿Cómo?

Estoy codificando puramente en Java, no XML.

Aquí está un ejemplo simple, el botón aparecerá aquí delante del texto, aunque el texto fue agregado por último:

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout layout = new RelativeLayout(this); Button button = new Button(this); TextView text = new TextView(this); button.setText("Button"); text.setText("Text"); layout.addView(button); layout.addView(text); setContentView(layout); } 

Comenzando con Lollipop, un StateListAnimator que controlaba la elevación se añadió al estilo predeterminado Button. En mi experiencia, esto obliga a los botones a aparecer por encima de todo lo demás independientemente de la colocación en XML (o adición programática en su caso). Eso podría ser lo que estás experimentando.

Para resolver esto, puede agregar un StateListAnimator personalizado si lo necesita o simplemente establecerlo en null si no lo hace.

XML:

 android:stateListAnimator="@null" 

Java:

 Button button = new Button(this); button.setText("Button"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { button.setStateListAnimator(null); } 

Más detalles: Android 5.0 android: elevación Funciona para la vista, pero no el botón?

En Android 5.0 (API 21) y superior, debe agregar android: elevación a la vista.

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout layout = new RelativeLayout(this); Button button = new Button(this); TextView text = new TextView(this); button.setText("Button"); text.setText("Text"); button.setElevation(3.0f); // add this line, you could try with values > 3.0f layout.addView(button); layout.addView(text); setContentView(layout); } 

Desde los desarrolladores de android:

 By default, all child views are drawn at the top-left of the layout, so you must define the position of each view using the various layout properties available from RelativeLayout.LayoutParams. 

http://developer.android.com/guide/topics/ui/layout/relative.html

Pruebe el siguiente fragmento:

 RelativeLayout layout = new RelativeLayout(this); Button button = new Button(this); TextView text = new TextView(this); button.setId(View.generateViewId()); text.setId(View.generateViewId()); button.setText("Button"); text.setText("Text"); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.BELOW, text.getId()); button.setLayoutParams(params); layout.addView(button); layout.addView(text); 

El botón aparece para flotar a la vanguardia de la RelativeLayout está en tan …

Prueba esto:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("Button"); RelativeLayout groupContainingButton = new RelativeLayout(this); groupContainingButton.addView(button); TextView text = new TextView(this); text.setText("Text"); RelativeLayout activityLayout = new RelativeLayout(this); activityLayout.addView(groupContainingButton); activityLayout.addView(text); setContentView(activityLayout); } 
  • ¿Cómo encontrar todos los archivos con cierta extensión en Android?
  • EOFException en Retrofit al ejecutar peticiones PUT síncronas
  • Android: transmisión de la cámara como mjpeg
  • Cargar imágenes de la carpeta de activos
  • ¿Por qué Java (Android?) Está estableciendo la fecha de la última modificación de mi archivo a mañana?
  • Agregando gestos sin gestureer
  • Solicitudes HTTP de Android que funcionan en el simulador, pero no en dispositivo de uso
  • Cómo reemplazar / cambiar el botón de la imagen mediante programación android
  • Problemas al utilizar unirest en Android Studio
  • El cajón de navegación en android no está en pantalla completa
  • ¿Hay alguna manera de ejecutar Runnable ejecutar () lanzar una excepción?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.