我对两个XML财产有点困惑:match_parent和fill_parent。看起来两者都是一样的。它们之间有什么区别吗?
当前回答
FILL_PARENT和MATCH_PARENT都是相同的财产。FILL_PARTENT在API级别8中被弃用。
其他回答
当您在XML属性中将布局宽度和高度设置为match_parent时,它将占据父视图的整个区域,即它将与父视图一样大。
<LinearLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#f9b0b0">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#b0f9dc"/>
</LinearLayout>
兔子的父母是红色的,孩子是绿色的。儿童占据所有区域。因为它的宽度和高度是match_parent。
注意:如果父级应用了填充,则不会包含该空间。
<LinearLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:background="#f9b0b0"
android:paddingTop="20dp"
android:paddingBottom="10dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#b0f9dc"/>
</LinearLayout>
因此TextView高度=300dp(父高度)-(20(paddingTop)+10(paddingBottom))=(300-30)dp=270 dp
填充与匹配
fill_parent是match_parent的前一个名称
对于API级别8及更高版本,fill_parent重命名为match_parent,fill_perent现在已弃用。
所以fill_parent和match_parent是相同的。
fill_rent的API文档
视图应该与其父视图一样大(减去填充)。从API Level 8开始,此常量已弃用,并由{@code match_parent}替换。
在功能上没有区别,Google只是将名称从API级别8(Android 2.2)中的fill_parent更改为match_parent。出于兼容性原因,fill_parent仍然可用。
LayoutParams.FILL_PARTENT和LayoutParams.MATCH_PARENT都具有值-1。不确定是什么促使谷歌从填充父项更改为匹配父项:)
由于大多数手机都是>=Android 2.2,因此您应该使用Match Parent以获得未来的兼容性。。。不确定他们何时会停止旧的Fill Parent常量!
1.匹配租金
当您将布局宽度和高度设置为match_parent时,它将占据父视图的整个区域,即它将与父视图一样大。
注意:如果父级应用了填充,则不会包含该空间。
当我们默认创建layout.xml时,我们将RelativeLayout作为默认父视图,android:layout_width=“match_parent”和android:layout_height=“match _parent“,即它占据了移动屏幕的整个宽度和高度。
还要注意,填充被应用于所有侧面,
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
现在,让我们添加一个子视图LinearLayout,并设置其layout_width=“match_parent”和layout_height=“match.parent”,图形视图将显示如下内容:,
匹配租用示例
Code
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.code2care.android.togglebuttonexample.MainActivity" >
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="11dp"
android:background="#FFFFEE"
android:orientation="vertical" >
2.填充租金:
这与match_parent相同,fill_paint在API级别8中进行了折旧。因此,如果您使用的是API级别8或更高级别,则必须避免使用fill_rent
让我们遵循与match_parent相同的步骤,只需在任何地方使用fill__parent。
您将看到fill_parent和matchparent在行为上没有差异。
只是为了给它一个更接近实际行动的名字。“fill_parent”不会像名称所暗示的那样填充剩余空间(为此,您使用权重属性)。相反,它占用的空间与其布局父级一样多。这就是为什么新名称是“match_parent”
match_parent,这意味着视图希望与其父视图一样大(减去填充)。
wrap_content,这意味着视图要足够大,以包围其内容(加上填充)
为了更好地说明,我创建了一个演示此概念的示例布局。为了看到效果,我为每个textView内容添加了边框。
在“匹配父项”文本视图内容中,我们可以看到它的布局宽度超出其父项的整个长度。
但我们可以在“包装内容”文本视图内容中看到,它是内容(包装内容)长度的包装宽度。
推荐文章
- Android-Facebook应用程序的键散列
- 登出时,清除活动历史堆栈,防止“返回”按钮打开已登录的活动
- 如何改变标题的活动在安卓?
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 如何在NestedScrollView内使用RecyclerView ?
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE
- 如何更改android操作栏的标题和图标
- Android Split字符串
- 让一个链接在安卓浏览器启动我的应用程序?