2012-06-18 17 views
7

Estoy tratando de agregar un textView a un frameLayout. El TextView tiene wrap_content propiedades, por lo que crece cuando el texto crece. Estoy agregarlo a un FrameLayout con esta función:Agregar una vista de texto a un FrameLayout en una posición determinada

((FrameLayout) findViewById(R.id.mainLayout)).addView(mEditText); 

Este es el xml de la disposición de marcos:

<FrameLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/mainLayout" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
</FrameLayout> 

El Textview siempre aparece en la esquina superior izquierda de la pantalla . Me gustaría ubicarlo en el medio, o en la parte superior central. ¿Cómo puede hacerse esto?
me daba las respuestas en How can I dynamically set the position of view in Android? y eran no ayuda mucho :(accidentes causados ​​principalmente ..

Respuesta

15

Prueba esto:.

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, Gravity.CENTER); 

((FrameLayout) findViewById(R.id.mainLayout)).addView(mEditText, params); 

Cambio Gravity para satisfacer su necesidad

Por cierto, el diseño del marco debe usar fill_parent para ancho y alto

+0

¡Gracias, esto es lo único que funcionó! Cambiando el diseño del marco para fill_parent ruins cosas para mí, no muestra las vistas que están bajo esta vista. –

+0

en lugar de fill_parent es mejor usar match_parent. – drdrej

+0

También puede usar 'LayoutParams.WRAP_CONTENT' para la propiedad' width' en caso de que su texto tenga un pequeño texto. –

0

Probar la gravedad o Disposición de la gravedad en su Framelayout o en la vista de texto. Hace su diseño al centro del pantalla. Utilice esta manera,

android:layout_gravity="center" 

o

android:gravity="center" 
+1

no ayuda, necesita insertar dinámicamente – xandy

0

se puede probar por establecer la gravedad de texto usarlo como-

textview.setGravity(Gravity.center); 

othervise por xml conjunto gravedad al centro de lo que se te mostrará en el centro y si usarás centerinparents para que siempre aparezca en el centro de la pantalla.

+0

No funciona. La vista todavía aparece en la parte superior izquierda, pero el cursor está ahora en el medio de la vista –

0

Conjunto FrameLayout propiedades android:layout_width y android:layout_height a fill_parent y también establecer TextView propiedad LayoutGravity. como Center, Right o Top.

Gracias

0

Añadir android:layout_gravity="center" en su diseño de marcos

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" > 
</FrameLayout> 
+0

no cambió nada .. :( –

0

Ajuste de la gravedad mediante programación definitivamente las obras Ajuste el layout_gravity a derecha en el xml TextView.setGravity (Gravity.RIGHT);

Cuestiones relacionadas