如何在XML中将圆形放在矩形上方

Posted

技术标签:

【中文标题】如何在XML中将圆形放在矩形上方【英文标题】:How to put circle above rectangle in XML 【发布时间】:2021-08-19 19:11:53 【问题描述】:

我想做这个布局(矩形上方的圆圈)

这是我卡住的地方

【问题讨论】:

如果您有任何问题,请自行尝试并发布 我试过但没有实现这个布局 你能分享你的工作吗……你到目前为止做了什么? 您使用的是哪种类型的布局?这可以通过ConstraintLayout轻松实现 约束布局 【参考方案1】:

我解决了这个问题

<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:background="@color/white"
tools:context=".activity.fragments.profile_page">

<View
    android:id="@+id/view_header"
    android:layout_
    android:layout_
    android:background="@color/purple_500"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView"
    android:layout_
    android:layout_
    android:letterSpacing="1"
    android:paddingVertical="10dp"
    android:text="@string/app_name"
    android:textAlignment="center"
    android:textColor="@color/white"
    android:textSize="30sp"
    android:textStyle="bold" />

<ImageView
    android:id="@+id/imageView"
    android:layout_
    android:layout_
    android:background="@drawable/profile_circular_image_background"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView" />

<LinearLayout
    android:layout_
    android:layout_
    android:background="@color/purple_200"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/imageView" />


</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

【参考方案2】:

我使用约束布局来制作这个布局。

see this layout image

首先,在你的drawable中创建一个drawable资源文件。

转到,Drawable -> 右键单击​​ -> 新建 -> Drawble 资源文件 -> 任意命名

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="oval"
       xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:color="@color/white" android:/>
    <solid android:color="@color/black" />
</shape>

其次,在 Activity/Fragment 中创建布局

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:background="@color/black"
    tools:context=".FragmentA">making
    <ImageView
        android:id="@+id/imageView"
        android:layout_
        android:layout_
        android:background="@color/teal_200"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/tvName"
        android:layout_
        android:layout_
        android:text="Jonathan Wick"
        android:textColor="@color/white"
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="@id/imageView"
        app:layout_constraintEnd_toEndOf="@id/imageView"
        app:layout_constraintStart_toStartOf="@id/imageView"
        app:layout_constraintTop_toTopOf="@id/imageView" />

    <ImageView
        android:id="@+id/circle"
        android:layout_
        android:layout_
        android:layout_marginTop="10dp"
        android:background="@drawable/circle"
        app:layout_constraintBottom_toTopOf="@id/tvDashBoard"
        app:layout_constraintEnd_toEndOf="@id/imageView"
        app:layout_constraintStart_toStartOf="@id/imageView"
        app:layout_constraintTop_toBottomOf="@id/tvName" />

    <TextView
        android:id="@+id/tvDashBoard"
        android:layout_
        android:layout_
        android:layout_marginStart="50dp"
        android:layout_marginTop="30dp"
        android:drawableStart="@drawable/ic_dashboard"
        android:drawablePadding="10dp"
        android:text="Dashboard"
        android:textColor="@color/white"
        android:textSize="20sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/circle" />

</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

以上是关于如何在XML中将圆形放在矩形上方的主要内容,如果未能解决你的问题,请参考以下文章

在macOS中将窗口的形状从矩形更改为其他形状,可以吗?

如何在iOS中将白色背景放在视图中[关闭]

如何在 JavaFX 中的矩形或圆形内添加图像?

如何在矩形 div 中添加圆形 [重复]

我正在尝试在 xml 中创建这个形状,如何制作它?

如何在Android中剪切矩形内的圆形路径