为啥在安卓手机上圆角不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在安卓手机上圆角不起作用相关的知识,希望对你有一定的参考价值。
参考技术A 方法一 使用 drawable-mdpi设置边框圆角可以在drawable-mdpi目录里定义一个xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#000000" />
<corners android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"/>
</shape>
解释:solid的表示填充颜色,为了简单,这里用的是黑色。
而corners则是表示圆角,注意的是这里bottomRightRadius是左下角而不是右下角,bottomLeftRadius右下角。
当然上面的效果也可以像下面一样设置,如下:
<corners android:radius="5dp" />
如果想引用这个xml,只需要@drawable/corners_bg.xml即可:
android:background="@drawable/corners_bg"
最后main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="#FFFFFF">
<RelativeLayout android:id="@+id/login_div"
android:layout_width="fill_parent" android:layout_height="150dip"
android:padding="15dip" android:layout_margin="15dip"
android:background="@drawable/corners_bg">
</RelativeLayout>
</LinearLayout>
方法二 Android使用 Shape 画边框线
1、布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:orientation="vertical" >
<!-- 表格布局 -->
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip" >
<!-- 表格布局:第一行 -->
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_top_corner_no_bottom_line"
android:padding="10dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dip"
android:text="姓名:" >
</TextView>
<EditText
android:id="@+id/bankingYourNameEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="@null"
android:singleLine="true" >
</EditText>
</TableRow>
<!-- 表格布局:第二行 -->
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_no_corner_without_bottom"
android:padding="10dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dip"
android:text="联系电话:" >
</TextView>
<EditText
android:id="@+id/bankingContactTelEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="@null"
android:inputType="phone"
android:singleLine="true" >
</EditText>
</TableRow>
<!-- 表格布局:第三行 -->
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_bottom_corner_no_top_line"
android:padding="10dip" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dip"
android:text="联系电话:" >
</TextView>
<EditText
android:id="@+id/bankingContactTelEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="@null"
android:inputType="phone"
android:singleLine="true" >
</EditText>
</TableRow>
</TableLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Button" />
</LinearLayout>
2、表格布局中每个TableRow表示一行,TableRow中的每个基本控件都是一列,这是一个三行两列的布局
这里的表格背景是自定义的shape,下面分别看一下三个shape的代码。
shape_top_corner_no_bottom_line.xml文件:顶部带圆角 白色背景 灰色边框 无下边框 长方体
<?xml version="1.0" encoding="UTF-8"?>
<!-- 顶部带圆角 白色背景 灰色边框 无下边框 长方体 -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="10dp" android:topRightRadius="10dp"
android:bottomRightRadius="0.1dp" android:bottomLeftRadius="0.1dp" />
<stroke android:width="1dp" android:color="#ffa8abad" />
</shape>
</item>
<item android:top="1dp" android:left="1dp" android:right="1dp">
<shape>
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="10dp" android:topRightRadius="10dp"
android:bottomRightRadius="0.1dp" android:bottomLeftRadius="0.1dp" />
<stroke android:width="1dp" android:color="#ffffffff" />
</shape>
</item>
</layer-list>
3、shape_no_corner_without_bottom.xml文件:不带圆角 白色背景 灰色边框 无下边框 长方体
<?xml version="1.0" encoding="UTF-8"?>
<!-- 不带圆角 白色背景 灰色边框 无下边框 长方体 -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<solid android:color="#FFFFFF" />
<stroke
android:width="1dp"
android:color="#ffa8abad" />
</shape>
</item>
<item
android:left="1dp"
android:right="1dp"
android:top="1dp">
<shape>
<solid android:color="#FFFFFF" />
<stroke
android:width="1dp"
android:color="#ffffffff" />
</shape>
</item>
</layer-list>
4、shape_bottom_corner_no_top_line.xml文件:底部圆角 白色背景 灰色边框 长方体
<?xml version="1.0" encoding="UTF-8"?>
<!-- 底部圆角 白色背景 灰色边框 长方体 -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="0.1dp" android:topRightRadius="0.1dp"
android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" />
<stroke android:width="1dp" android:color="#ffa8abad" />
</shape>
</item>
<item android:top="1dp" android:bottom="1dp" android:left="1dp" android:right="1dp">
<shape>
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="0.1dp" android:topRightRadius="0.1dp"
android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" />
<stroke android:width="1dp" android:color="#ffffffff" />
</shape>
</item>
</layer-list>
5、说明:
shape_top_corner_no_bottom_line.xml
shape_no_corner_without_bottom.xml
shape_bottom_corner_no_top_line.xml
以上三个文件都存放在 drawable 中。本回答被提问者采纳
为啥标记为@IBInspectable 的属性不起作用?
【中文标题】为啥标记为@IBInspectable 的属性不起作用?【英文标题】:Why properties tagged @IBInspectable is not working?为什么标记为@IBInspectable 的属性不起作用? 【发布时间】:2016-10-18 08:33:45 【问题描述】:我在这里按照tutorial 创建了一个可检查和可设计的视图。我只想在UIView
中添加边框颜色、边框宽度和圆角边框功能。
我已经成功展示了这些属性。但不管我在情节提要上设置了什么,结果仍然就像他们不在那里一样。没有边框,即使我将边框设置为宽度为 2 且颜色为黑色。它没有在情节提要和运行时显示。我已将边框设置为 2 宽度,但在运行时,我在 didViewLoad 处打印边框宽度值,结果为 0。可能有什么问题?
@IBDesignable extension view: UIView
@IBInspectable var cornerRadius: CGFloat
get
return layer.cornerRadius
set
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
@IBInspectable var borderWidth: CGFloat
get
return layer.borderWidth;
set
layer.borderWidth = borderWidth;
@IBInspectable var borderColor: UIColor?
get
return UIColor(CGColor: layer.borderColor!);
set
layer.borderColor = borderColor?.CGColor
这也不起作用:
@IBDesignable class BOView: UIView
@IBInspectable var cornerRadius: CGFloat
get
return layer.cornerRadius
set
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
@IBInspectable var borderWidth: CGFloat
get
return layer.borderWidth;
set
layer.borderWidth = borderWidth;
@IBInspectable var borderColor: UIColor?
get
return UIColor(CGColor: layer.borderColor!);
set
layer.borderColor = borderColor?.CGColor
【问题讨论】:
你在 IB 中打开菜单Editor
➜ Automatically Refresh Views
了吗?
@holex 该选项已打开。
【参考方案1】:
尝试使用 newValue 而不是实际值。
例如,
@IBInspectable var borderWidth: CGFloat
get
return layer.borderWidth
set
layer.borderWidth = newValue
Chen,我确实更喜欢您这样做的方式,但也请注意,您可以直接从 Storyboard 中尝试做的事情,而无需使用 IBDesignable。您可以在用户定义的运行时属性中设置图层属性。
【讨论】:
你在发布之前检查过这个答案吗?有用吗? 哦哦哦原来是这样!是的,我需要使用newValue
而不是变量名。谢谢!!!!但是 IBDesignable 仍然不起作用......但这是一个很大的飞跃!
等等,IBDesignable 现在可以工作了!!我不知道为什么!也许我需要关闭并重新打开 Xcode。谢谢!
很高兴。你的扩展有效吗?它可能真的很方便。
@CarienvanZyl 是的!现在有一个全新的世界和可能性在我面前打开了哈哈。我必须实现控制器并运行它的日子已经一去不复返了,只是为了看看边框是什么样子的。我认为这个可检查和可设计的东西非常复杂,所以直到现在我才去了解它。哦,我离真相太远了,哈哈。以上是关于为啥在安卓手机上圆角不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥外部链接在构建后在 phonegap 应用程序上不起作用