我想做一个圆形边框的布局。如何在 LinearLayout中应用特定尺寸的半径?
LinearLayout
您将使用 形状可绘制作为布局的背景,并设置其角半径。 查看这个博客 获得详细的教程
您可以在可绘制文件夹中创建一个 XML 文件
在 shape.xml:
shape.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#888888" > </solid> <stroke android:width="2dp" android:color="#C4CDE0" > </stroke> <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp" > </padding> <corners android:radius="11dp" > </corners> </shape>
<corner>标签是针对您的具体问题的。
<corner>
根据需要进行更改。
在你的 whatever_layout_name.xml里:
whatever_layout_name.xml
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_margin="5dp" android:background="@drawable/shape" > </LinearLayout>
这是我在应用程序中经常做的。
布局
<LinearLayout android:id="@+id/linearLayout" android:layout_width="300dp" android:gravity="center" android:layout_height="300dp" android:layout_centerInParent="true" android:background="@drawable/rounded_edge"> </LinearLayout>
可绘制文件夹 round _ edge. xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@android:color/darker_gray"> </solid> <stroke android:width="0dp" android:color="#424242"> </stroke> <corners android:topLeftRadius="100dip" android:topRightRadius="100dip" android:bottomLeftRadius="100dip" android:bottomRightRadius="100dip"> </corners> </shape>
尝试这一点,为程序设置一个半径为 LinearLayout 或任何视图的背景。
private Drawable getDrawableWithRadius() { GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setCornerRadii(new float[]{20, 20, 20, 20, 20, 20, 20, 20}); gradientDrawable.setColor(Color.RED); return gradientDrawable; } LinearLayout layout = new LinearLayout(this); layout.setBackground(getDrawableWithRadius());
尝试使用 Glide 模块处理图像:
implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
下面是我在片段中的用例。这就是我从常量中获取图像 URL 的地方。然后我把拐角半径设为16。然后,我在 LinearLayout 中设置结果背景:
Glide.with(this).load(Constants.FLAT_IMAGE).apply(RequestOptions.bitmapTransform( RoundedCorners(16) )).into(object : CustomTarget<Drawable>() { override fun onLoadCleared(placeholder: Drawable?) { super.onLoadStarted(placeholder) } override fun onResourceReady( resource: Drawable, transition: Transition<in Drawable>? ) { binding.llPromoDreamFlatImage.background = resource } })
通过这种方式,您可以将背景图像设置为 LinearLayout 的图片或带有圆角边缘的颜色。下面是我的例子:
<LinearLayout android:id="@+id/llPromoDreamFlatImage" android:layout_width="match_parent" android:layout_height="420dp" android:layout_marginTop="35dp" android:layout_gravity="center" android:gravity="center" >