android - programacion - ¿Cómo puedo colocar un botón entre dos diseños?
listview con botones android studio (2)
Creo que deberías intentar utilizar RelativeLayout
en el que pondrás tus dos diseños y tu botón. Pero si desea colocar el botón en la parte superior de los dos diseños, debe colocarlo en su RelativeLayout
último debido al orden z, y luego usar el atributo XML android:centerInParent
.
Entonces su diseño sería algo como lo siguiente:
<RelativeLayout ...
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout ...
android:id="@+id/myLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" > <!-- Or wherever you want to position this layout -->
...
</LinearLayout>
<LinearLayout ...
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/myLayout1" > <!-- Or wherever you want to position this layout -->
...
</LinearLayout>
<Button ...
android:layout_centerInParent="true" />
</RelativeLayout>
Estoy tratando de colocar un botón entre dos diseños.
Además, no quiero tener que hacer esto con un margen si puedo evitarlo, cuando comienzas a lidiar con diferentes tamaños de pantalla. Se rompe el margen. (En esta imagen, intento posicionar el botón verde entre dos diseños)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="@color/busy_white">
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/profile_default_round"
android:background="@drawable/ring_status_clock_in"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="John Doe"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Manager"/>
</LinearLayout>
<RelativeLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/translucent_black_90"
android:padding="16dp">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_alignParentLeft="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Today Total"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="08:32"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_alignParentRight="true">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Week Total"
android:gravity="right"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="24:32"
android:gravity="center"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-40dp">
</LinearLayout>
</RelativeLayout>
<include layout="@layout/dashboard_clock_in_button" />
</LinearLayout>
Este tipo de IU requiere la superposición de varias capas.
Entonces FrameLayout es el héroe aquí.
Para dar una idea básica de lo que deseamos lograr, podemos bocetar la pantalla y decidir ubicaciones
FL es el contenedor principal que será un FrameLayout.
Necesitas hacer un botón de altura fija. Digamos que BL es de altura bl dp.
Simplemente proporcione un MarginBottom de longitud bl / 2 dp a LinearLayout LL .
Donde LL es el contenedor que contendría la imagen de perfil y las obras.
El archivo de diseño se verá así
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/ConcernedPortionofScreen"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.4"
android:orientation="vertical">
<!-- Parent FrameLayout ''FL'' -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- This is Layout ''LL''
This is where you will place your image & the nice bg
-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="25dp"
android:background="#b2ebf2" />
<!-- BL = 50dp -->
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_gravity="bottom|center_horizontal"
android:background="#558b2f"
android:text="@android:string/ok"
android:textSize="18sp"
android:textColor="@android:color/white" />
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/RestofScreen"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.6"
android:orientation="vertical" />
</LinearLayout>
La salida se verá así