更改形状的填充

问题描述 投票:0回答:1

我需要做一个部分透明的布局,中间有一个完全透明的矩形。我发现做到这一点的最佳方法是“这个建议”,效果非常好。问题是我实际上需要这个矩形是水平的(就好像填充垂直方向比水平方向大)。在我提到的线程中,他们说可以以编程方式实现形状,但我是这种语言的新手,我无法做到这一点。到目前为止我做到了: activity.xml 有这样的布局:


<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="0dp" android:background="@drawable/pattern" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent"> <FrameLayout android:id="@+id/hole_frame" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"> </FrameLayout> </androidx.constraintlayout.widget.ConstraintLayout>

activity.kt 有这个代码

val frameLayout = findViewById<FrameLayout>(R.id.hole_frame) val drawable = ShapeDrawable(RectShape()) drawable.paint.color = -0x34000000 drawable.paint.style = Paint.Style.STROKE drawable.paint.strokeWidth = 200f frameLayout.background = drawable

这给了我这个:


enter image description here 我已经尝试使用drawable.setPadding 设置填充,但这不起作用。如果您有解决方案或任何其他方式在布局中间做这个矩形“孔”,我将不胜感激。

android kotlin android-studio
1个回答
0
投票

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:background="@mipmap/ic_launcher"/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="10" android:background="@color/semi_transparent_grey"/> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="80" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="40" android:background="@color/semi_transparent_grey"/> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="20"/> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="40" android:background="@color/semi_transparent_grey"/> </LinearLayout> <View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="10" android:background="@color/semi_transparent_grey"/> </LinearLayout> </FrameLayout>

您可以在这里看到嵌套的ViewGroups和Views,其宽度和高度由它们的百分比权重调节。水平方向的宽度分布为10%-80%-10%。 40%-20%-40% - 垂直方向内侧条纹内。
当然,您可以设置自己的值。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.