如何在 CardView 中指定 editText 的位置?
How can I specify the position of editText in CardView?
<androidx.cardview.widget.CardView
app:cardCornerRadius="5dp"
app:cardElevation="8dp"
android:layout_width="370dp"
android:layout_height="450dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:descendantFocusability="beforeDescendants">
<EditText
android:id="@+id/heightText"
android:layout_width="140dp"
android:layout_height="60dp"
android:hint="Name"
android:textAlignment="center"
android:textStyle="bold" />
</androidx.cardview.widget.CardView>
这是我放在 CardView 中的 EditText 代码。
如何根据需要更改图片中放置的editText的位置?例如,当我尝试用鼠标按住 editText 时,它会自动 returns 到它在图像中的位置。就像被磁化到左上角一样
要在 CardView
中定位视图,您需要将它们嵌套在布局容器视图中,例如 LinearLayout
、RelativeLayout
、ConstraintLayout
等。在 CardView 中。
这是一个使用 ConstraintLayout
的例子:
<androidx.cardview.widget.CardView
app:cardCornerRadius="5dp"
app:cardElevation="8dp"
android:layout_width="370dp"
android:layout_height="450dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:descendantFocusability="beforeDescendants">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/heightText"
android:layout_width="140dp"
android:layout_height="60dp"
android:hint="Name"
android:textAlignment="center"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
那你就可以利用布局容器的规则来合理定位它们了
如果您的 CardView 具有动态高度 (wrap_content
),您还需要将 ConstraintLayout 视图高度也设置为 wrap_content
而不是 match_parent
.
如果您只有一个视图要放入卡片中,您还可以使用 android:layout_gravity
属性而不是使用布局容器来控制其位置。 CardView
inherits from FrameLayout
,因此关于定位视图的相同指南适用:
FrameLayout is designed to block out an area on the screen to display a single item. Generally, FrameLayout should be used to hold a single child view, because it can be difficult to organize child views in a way that's scalable to different screen sizes without the children overlapping each other. You can, however, add multiple children to a FrameLayout and control their position within the FrameLayout by assigning gravity to each child, using the android:layout_gravity attribute.
<androidx.cardview.widget.CardView
app:cardCornerRadius="5dp"
app:cardElevation="8dp"
android:layout_width="370dp"
android:layout_height="450dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:descendantFocusability="beforeDescendants">
<EditText
android:id="@+id/heightText"
android:layout_width="140dp"
android:layout_height="60dp"
android:hint="Name"
android:textAlignment="center"
android:textStyle="bold" />
</androidx.cardview.widget.CardView>
这是我放在 CardView 中的 EditText 代码。
如何根据需要更改图片中放置的editText的位置?例如,当我尝试用鼠标按住 editText 时,它会自动 returns 到它在图像中的位置。就像被磁化到左上角一样
要在 CardView
中定位视图,您需要将它们嵌套在布局容器视图中,例如 LinearLayout
、RelativeLayout
、ConstraintLayout
等。在 CardView 中。
这是一个使用 ConstraintLayout
的例子:
<androidx.cardview.widget.CardView
app:cardCornerRadius="5dp"
app:cardElevation="8dp"
android:layout_width="370dp"
android:layout_height="450dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:descendantFocusability="beforeDescendants">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/heightText"
android:layout_width="140dp"
android:layout_height="60dp"
android:hint="Name"
android:textAlignment="center"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
那你就可以利用布局容器的规则来合理定位它们了
如果您的 CardView 具有动态高度 (wrap_content
),您还需要将 ConstraintLayout 视图高度也设置为 wrap_content
而不是 match_parent
.
如果您只有一个视图要放入卡片中,您还可以使用 android:layout_gravity
属性而不是使用布局容器来控制其位置。 CardView
inherits from FrameLayout
,因此关于定位视图的相同指南适用:
FrameLayout is designed to block out an area on the screen to display a single item. Generally, FrameLayout should be used to hold a single child view, because it can be difficult to organize child views in a way that's scalable to different screen sizes without the children overlapping each other. You can, however, add multiple children to a FrameLayout and control their position within the FrameLayout by assigning gravity to each child, using the android:layout_gravity attribute.