我如何制作圆角布局?我想应用圆角到我的线性布局。
当前回答
使用CardView获得任何布局的圆角边缘。 使用card_view:cardCornerRadius="5dp"为cardview获得圆角布局边缘。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="15dp"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3"
android:text="@string/quote_code"
android:textColor="@color/white"
android:textSize="@dimen/text_head_size" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".7"
android:text="@string/quote_details"
android:textColor="@color/white"
android:textSize="@dimen/text_head_size" />
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
其他回答
对于API 21+,使用剪辑视图
在API 21中,圆形轮廓剪辑被添加到View类中。更多信息请参见培训文档或参考资料。
这个内置的功能使圆角非常容易实现。它适用于任何视图或布局,并支持适当的剪辑。
下面是该怎么做:
创建一个可绘制的圆形形状,并将其设置为视图的背景: android:背景= " @drawable / round_outline” 在代码中剪辑轮廓:setClipToOutline(true)
文档曾经说过,你可以设置android:clipToOutline=“true”的XML,但这个错误现在终于解决了,文档现在正确地指出,你只能在代码中这样做。
它的样子:
关于ImageViews的特别说明
setClipToOutline()仅在视图的背景设置为可绘制的形状时才有效。如果此背景形状存在,视图将背景的轮廓作为剪切和阴影目的的边界。
这意味着如果你想圆角的ImageView与setClipToOutline(),你的图像必须来自android:src而不是android:background(因为背景是用于圆角形状)。如果你必须使用背景来设置你的图像而不是src,你可以使用这个嵌套视图的解决方案:
创建一个外部布局,将其背景设置为可绘制的形状 将布局包装在ImageView周围(没有填充) ImageView(包括布局中的任何其他内容)现在将被剪切到外部布局的圆形形状。
在android v7支持库中使用CardView。 虽然它有点重,但它解决了所有的问题,而且足够简单。 不像set drawable background方法,它可以成功地剪辑子视图。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="@android:color/transparent"
card_view:cardCornerRadius="5dp"
card_view:cardElevation="0dp"
card_view:contentPadding="0dp">
<YOUR_LINEARLAYOUT_HERE>
</android.support.v7.widget.CardView>
下面是一个XML文件的副本,用于创建一个具有白色背景,黑色边框和圆角的可绘制对象:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ffffffff"/>
<stroke android:width="3dp"
android:color="#ff000000"
/>
<padding android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp"
/>
<corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp" android:topRightRadius="7dp"/>
</shape>
将其保存为可绘制目录下的XML文件, 使用它就像使用任何可绘制的背景(图标或资源文件),使用它的资源名(R.drawable.your_xml_name)
如果你想让你的布局圆润,最好使用CardView,它提供了许多功能,使设计美观。
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardCornerRadius="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3"
android:text="@string/quote_code"
android:textColor="@color/white"
android:textSize="@dimen/text_head_size" />
</LinearLayout>
</android.support.v7.widget.CardView>
使用这个card_view:cardCornerRadius="5dp",你可以改变半径。
我已经在@gauravsapiens的回答中给出了我的评论,让你对参数将产生的影响有一个合理的理解。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Background color -->
<solid android:color="@color/white" />
<!-- Stroke around the background, width and color -->
<stroke android:width="4dp" android:color="@color/drop_shadow"/>
<!-- The corners of the shape -->
<corners android:radius="4dp"/>
<!-- Padding for the background, e.g the Text inside a TextView will be
located differently -->
<padding android:left="10dp" android:right="10dp"
android:bottom="10dp" android:top="10dp" />
</shape>
如果你只是想创建一个圆角的形状,去掉填充和描边就可以了。如果你把固体也去掉,你会在透明的背景上创建圆角。
为了偷懒,我在下面创建了一个形状,它只是一个纯白色的圆角背景-享受!:)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Background color -->
<solid android:color="@color/white" />
<!-- The corners of the shape -->
<corners android:radius="4dp"/>
</shape>
推荐文章
- 如何从shell执行XPath一行程序?
- Android SDK管理器无法打开
- 如何将DecimalFormat的小数分隔符从逗号更改为点/点?
- 没有为文档检测到语法约束(DTD或XML模式)
- 免费的XML格式工具
- Android谷歌maps java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion
- android中textview的圆角
- 在Android中,对话框被取消或被取消有什么区别?
- 在ScrollView触摸处理中的HorizontalScrollView
- xsd:include和xsd:import之间有什么区别?
- 何时在Android中使用RxJava,何时使用Android架构组件中的LiveData ?
- 如何在Android项目中使用ThreeTenABP
- 指定的子节点已经有一个父节点。你必须先在子对象的父对象上调用removeView() (Android)
- 我的Android设备没有出现在adb设备列表中
- 在没有安装apk的情况下获取Android .apk文件的VersionName或VersionCode