在线性布局内对齐线性布局,如 whatsapp 更改个人资料图片

Aligning linear layouts inside linear layout like whatsapp change profile picture

我正在尝试设计底部模态 sheet,当用户单击以添加/更新个人资料图片(如 WhatsApp)时,它将显示给用户。 为此 - 我在 xml 文件中编码如下。

但是 - 我无法将第二个子 LinearLayout (Gallery) 居中对齐,最后一个 LinearLayout (Remove) 居右对齐。

我使用了重力和 layout_gravtiy = "center" / "center_horizontal"。 但是——结果却不如预期。

最好的方法是什么?

注意:子线性布局的宽度和高度应为 wrap_content。

提前致谢。

下面是我的 xml 文件。

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="horizontal"
  android:paddingBottom="10dp"
  android:paddingTop="10dp"
  android:paddingLeft="10dp"
  android:paddingRight="10dp">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:orientation="vertical">

    <de.hdodenhof.circleimageview.CircleImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/camera"
        android:layout_gravity="center_horizontal"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Camera"
        android:textColor="#000"
        android:textSize="10sp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="3dp"
        android:textStyle="normal" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:orientation="vertical">

    <de.hdodenhof.circleimageview.CircleImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/gallery"
        android:layout_gravity="center_horizontal"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="3dp"
        android:text="Gallery"
        android:textColor="#000"
        android:textSize="10sp"
        android:textStyle="normal" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:gravity="right"
    android:orientation="vertical">

    <de.hdodenhof.circleimageview.CircleImageView
        android:layout_width="55dp"
        android:layout_height="50dp"
        android:src="@drawable/image_delete" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="3dp"
        android:text="Remove"
        android:textColor="#000"
        android:textSize="10sp"
        android:textStyle="normal" />
</LinearLayout>

下面是我接近的设计

预期设计为 -:与 ANDROID.

屏幕底部的 Whatsapp 更改个人资料图片对话框相同

如果你可以使用约束布局那么你的布局可能是这样的

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/linearLayout45"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


<com.silverskysoft.skysalon.customViews.CircleImageView
    android:id="@+id/circleImageView"
    android:layout_width="52dp"
    android:layout_height="50dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:src="@drawable/ic_back"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:text="Camera"
    android:textColor="#ffffff"
    android:textSize="10sp"
    android:textStyle="normal"
    app:layout_constraintEnd_toEndOf="@+id/circleImageView"
    app:layout_constraintStart_toStartOf="@+id/circleImageView"
    app:layout_constraintTop_toBottomOf="@+id/circleImageView" />


<com.silverskysoft.skysalon.customViews.CircleImageView
    android:id="@+id/circleImageView2"
    android:layout_width="51dp"
    android:layout_height="50dp"
    android:layout_marginStart="8dp"
    android:src="@drawable/ic_packages"
    app:layout_constraintStart_toEndOf="@+id/circleImageView"
    app:layout_constraintTop_toTopOf="@+id/circleImageView" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:text="Gallery"
    android:textColor="#ffffff"
    android:textSize="10sp"
    android:textStyle="normal"
    app:layout_constraintEnd_toEndOf="@+id/circleImageView2"
    app:layout_constraintStart_toStartOf="@+id/circleImageView2"
    app:layout_constraintTop_toBottomOf="@+id/circleImageView2" />


<com.silverskysoft.skysalon.customViews.CircleImageView
    android:id="@+id/circleImageView3"
    android:layout_width="52dp"
    android:layout_height="50dp"
    android:layout_marginStart="8dp"
    android:src="@drawable/ic_signout"
    app:layout_constraintStart_toEndOf="@+id/circleImageView2"
    app:layout_constraintTop_toTopOf="@+id/circleImageView2" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:text="Remove"
    android:textColor="#ffffff"
    android:textSize="10sp"
    android:textStyle="normal"
    app:layout_constraintEnd_toEndOf="@+id/circleImageView3"
    app:layout_constraintStart_toStartOf="@+id/circleImageView3"
    app:layout_constraintTop_toBottomOf="@+id/circleImageView3" />
</androidx.constraintlayout.widget.ConstraintLayout>

线性布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/linearLayout45"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">


    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:padding="16dp"
        android:drawableTop="@drawable/camera"
        android:drawablePadding="8dp"
        android:text="Camera"
        android:textColor="#ffffff"
        android:textSize="10sp"
        android:textStyle="normal" />


    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:padding="16dp"
        android:text="Gallery"
        android:drawableTop="@drawable/gallery"
        android:drawablePadding="8dp"
        android:textColor="#ffffff"
        android:textSize="10sp"
        android:textStyle="normal" />


    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:drawableTop="@drawable/image_delete"
        android:drawablePadding="8dp"
        android:padding="16dp"
        android:text="Remove"
        android:textColor="#ffffff"
        android:textSize="10sp"
        android:textStyle="normal" />
</LinearLayout>

你好,你这个设计问题可以用bottom Sheet.

什么是底部Sheet?

回答。 Android 底部 Sheet 组件从底部向上滑动,显示更多相关内容。您可以在地图应用程序(底部 sheet 显示位置、方向信息)、音乐播放器(播放栏固定在底部并在向上滑动时打开)等应用程序中注意到底部 sheets。底部 sheet 是 android 设计支持库的组件。

请参考此 link 以获得您的解决方案。

特别感谢 Ravi Tamada 先生关于底部的精彩教程 sheet

Android Working with Bottom Sheet