如何在线性布局中应用角半径

我想做一个圆形边框的布局。如何在 LinearLayout中应用特定尺寸的半径?

169000 次浏览

您将使用 形状可绘制作为布局的背景,并设置其角半径。 查看这个博客 获得详细的教程

您可以在可绘制文件夹中创建一个 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>标签是针对您的具体问题的。

根据需要进行更改。

在你的 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"
>