我对两个XML财产有点困惑:match_parent和fill_parent。看起来两者都是一样的。它们之间有什么区别吗?
当前回答
谷歌更改了名称以避免混淆。
旧名称填充父项的问题在于它暗示它会影响父项的维度,而匹配父项更好地描述了结果行为-将维度与父项匹配。
这两个常数最终都解析为-1,因此在应用程序中会产生相同的行为。具有讽刺意味的是,为了澄清问题而进行的名称更改似乎增加了混乱,而不是消除了混乱。
其他回答
match_parent,这意味着视图希望与其父视图一样大(减去填充)。
wrap_content,这意味着视图要足够大,以包围其内容(加上填充)
为了更好地说明,我创建了一个演示此概念的示例布局。为了看到效果,我为每个textView内容添加了边框。
在“匹配父项”文本视图内容中,我们可以看到它的布局宽度超出其父项的整个长度。
但我们可以在“包装内容”文本视图内容中看到,它是内容(包装内容)长度的包装宽度。
它们是一样的(在API级别8+中)。使用match_parent。
FILL_PARTENT(在API级别8及更高版本中重命名为MATCH_PARENT),这意味着视图希望与其父视图一样大(减去填充)...fill_parent:视图应该和其父视图一样大(减去填充)。从API Level 8开始,此常量已弃用,并由match_parent替换。
http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
只是为了给它一个更接近实际行动的名字。“fill_parent”不会像名称所暗示的那样填充剩余空间(为此,您使用权重属性)。相反,它占用的空间与其布局父级一样多。这就是为什么新名称是“match_parent”
当您在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}替换。
FILL_PARTENT在API级别8和MATCH_PARENTuse高级API中已弃用
推荐文章
- 我如何在一个片段中访问getSupportFragmentManager() ?
- 调试在哪里。Android Studio中的密钥存储库
- 从资产中读取文件
- 在不活动的地方调用getLayoutInflater()
- 设置Android布局元素的背景颜色
- 错误:'keytool'不能被识别为内部或外部命令、可操作程序或批处理文件
- 在应用程序本身中更改Locale
- apk (.apk)和应用程序包(.aab)的区别
- 如何设置超时在改造库?
- Android - SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度
- TextView的字体大小在Android应用程序改变字体大小从本机设置
- 如何模拟Android杀死我的进程
- 禁用EditText闪烁光标
- Android Eclipse -无法找到*.apk
- 设置TextView文本从html格式的字符串资源在XML