superposición superposicion samsung quita para pantalla desactivar cómo como aplicacion android android-webview relativelayout

android - superposicion - superposición de pantalla samsung j7



¿Cómo mostraría una vista como una superposición de otra? (3)

Tengo dos vistas que ocupan toda la pantalla y quiero mostrar ambas vistas al mismo tiempo, una encima de la otra. Mi diseño se ve así:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <org.example.myCustomView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>

Tenga en cuenta que myCustomView usa onDraw (esta última declaración del método es inválida ()) para dibujar gráficos personalizados. El problema que tengo es que solo muestra myCustomView , WebView está oculto. Intenté cambiar el color de fondo de mycustomView a transparente, pero esto no hace ninguna diferencia.

También me gustaría tener la capacidad de hacer myCustomView como una superposición en WebView o viceversa.


El término fill_parent significa consumir todo el espacio permitido en el padre. Intenta configurarlo para wrap_content . Luego, puede intentar agregar weight = 1 a ambos para tratar de distribuir uniformemente el espacio restante.


No estoy seguro si puedes hacer esto cuando están en el mismo archivo xml, pero sé que si te mueves:

<org.example.myCustomView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" />

a otro archivo xml, y crear otra actividad. establezca la vista de contenido en el archivo xml que contiene org.example.myCustomView y llame a esa actividad. en el manifiesto, cuando agregue esa actividad, agregue una declaración de tema así:

android:theme="@android:style/Theme.Dialog"

La declaración completa debe verse así:

<activity android:name=".name_of_activity" android:label="TextToBeOnTop" android:theme="@android:style/Theme.Dialog"> </activity>

el resultado se verá así (solo lo hará con sus componentes):

aunque es posible hacerlo cuando aún están en el mismo archivo xml. si es posible, probablemente se haría dejando el manifiesto solo y editando su costomeView a lo siguiente:

<org.example.myCustomView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:theme="@android:style/Theme.Dialog" />

(Agregué la declaración del tema en el CustomView)

Si esto no es lo que está buscando, entonces le recomendaría algo similar a lo que dijo Nick Campion, que fue cambiar fillParent a wrapContent. Usted podría hacer eso, o podría elegir qué tamaño desea que sea. Aquí hay dos opciones que podrías usar:

<org.example.myCustomView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="50dip" android:layout_height="50dip" />

(puede cambiar "50dip" a cualquier número que desee, siempre y cuando termine con dip)

o:

<org.example.myCustomView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" />


Use un RelativeLayout para empezar.

Puede usar ViewGroup.addView(View child, int index, ViewGroup.LayoutParams params) o una variante junto con ViewGroup.removeView(View view) o ViewGroup.removeViewAt(int index) .

Obviamente, esto requerirá que infle las vistas manualmente usando LayoutInflater pero puede mantener una referencia global para cada una después de inflarlas y simplemente alternar entre las dos.