我需要做一个部分透明的布局,中间有一个完全透明的矩形。我发现做到这一点的最佳方法是“这个建议”,效果非常好。问题是我实际上需要这个矩形是水平的(就好像填充垂直方向比水平方向大)。在我提到的线程中,他们说可以以编程方式实现形状,但我是这种语言的新手,我无法做到这一点。到目前为止我做到了: 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
这给了我这个:
我已经尝试使用drawable.setPadding 设置填充,但这不起作用。如果您有解决方案或任何其他方式在布局中间做这个矩形“孔”,我将不胜感激。
<?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% - 垂直方向内侧条纹内。 当然,您可以设置自己的值。