热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

match_parent=1多Dpi适配布局消失

match_parent-1多Dpi适配布局消失android源码中match_parent可见FILL_PARENT-1、MATCH_PARENT-1、WRAP_CONTENT

match_parent = -1多Dpi适配布局消失


android源码中match_parent

这里写图片描述


可见FILL_PARENT=-1、MATCH_PARENT=-1、WRAP_CONTENT =-2
他们都为负数,数据类型都为整数



布局中调用


<FrameLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:app&#61;"http://schemas.android.com/apk/res-auto"xmlns:tools&#61;"http://schemas.android.com/tools"android:id&#61;"&#64;&#43;id/content_main"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"android:paddingBottom&#61;"&#64;dimen/activity_vertical_margin"android:paddingLeft&#61;"&#64;dimen/activity_horizontal_margin"android:paddingRight&#61;"&#64;dimen/activity_horizontal_margin"android:paddingTop&#61;"&#64;dimen/activity_vertical_margin"app:layout_behavior&#61;"&#64;string/appbar_scrolling_view_behavior"tools:context&#61;"com.example.demo.MainActivity"tools:showIn&#61;"&#64;layout/activity_main"><TextView
android:id&#61;"&#64;&#43;id/test"android:background&#61;"&#64;color/colorAccent"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:layout_gravity&#61;"bottom"android:text&#61;"Hello World!" />

FrameLayout>

要确保布局的灵活性并适应各种尺寸的屏幕&#xff0c;应使用 “wrap_content” 和 “match_parent” 控制某些视图组件的宽度和高度。

使用 “wrap_content”&#xff0c;系统就会将视图的宽度或高度设置成所需的最小尺寸以适应视图中的内容&#xff0c;而 “match_parent”&#xff08;在低于 API 级别 8 的级别中称为 “fill_parent”&#xff09;则会展开组件以匹配其父视图的尺寸。

如果使用 “wrap_content” 和 “match_parent” 尺寸值而不是硬编码的尺寸&#xff0c;视图就会相应地仅使用自身所需的空间或展开以填满可用空间。此方法可让布局正确适应各种屏幕尺寸和屏幕方向。



适配多Dpi和多显示模式

private void init() {mText &#61; (TextView) findViewById(R.id.test);ViewGroup.LayoutParams lp &#61; mText.getLayoutParams();Log.d(TAG, "mText.getLayoutParams():width&#61;" &#43; lp.width);lp.width &#61; lp.width * (400 / 240);Log.d(TAG, "mText.getLayoutParams():width&#61;" &#43; lp.width);mText.setText("\n" &#43; getDisplay() &#43; "\n");}private String getDisplay() {DisplayMetrics dm &#61; new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);return " 手机屏幕的分辨率的大小是:" &#43; dm.widthPixels &#43; "*" &#43; dm.heightPixels&#43; "\n 屏幕密度&#xff08;0.75 / 1.0 / 1.5&#xff09; " &#43; dm.density &#43;"\n 屏幕密度DPI&#xff08;120 / 160 / 240&#xff09; " &#43; dm.densityDpi;}

进行dpi适配时lp.width &#61; lp.width * (400 / 240);会对布局宽高进行放缩&#xff0c;由于 (400 / 240)这个一般是density/realDpi值&#xff0c;这个值在&#xff08;-∞&#xff0c;-1]&[1,&#43;∞)时道没有什么影响

问题1&#xff1a;当&#xff08;-1,1&#xff09;之间&#xff0c;布局就会消失
原因&#xff1a;由于lp.width &#61; match_parent &#61; -1&#xff0c;且lp.width为整数类型&#xff0c;强制换换为整数&#xff0c;最后乘积 lp.width * (213 / 240) &#61; 0&#xff1b;

问题2&#xff1a;当[2,&#43;∞)之间&#xff0c;布局相当于设置为wrap_content

问题3&#xff1a;在&#xff08;-∞&#xff0c;-1]之间布局虽然不会消失&#xff0c;但是宽高就是固定的数字&#xff1b;布局会严重的变形



推荐阅读
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 今天就跟大家聊聊有关怎么在Android应用中实现一个换肤功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 微信小程序导航跟随的实现方法
    本文介绍了在微信小程序中实现导航跟随的方法。通过设置导航的position属性和绑定滚动事件,可以实现页面向下滚动到导航位置时,导航固定在页面最上方;页面向上滚动到导航位置时,导航恢复到原始位置;点击导航可以平滑跳转到相应位置。代码示例也给出了具体实现方法。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • Java图形化计算器设计与实现
    本文介绍了使用Java编程语言设计和实现图形化计算器的方法。通过使用swing包和awt包中的组件,作者创建了一个具有按钮监听器和自定义界面尺寸和布局的计算器。文章还分享了在图形化界面设计中的一些心得体会。 ... [详细]
  • 1简介本文结合数字信号处理课程和Matlab程序设计课程的相关知识,给出了基于Matlab的音乐播放器的总体设计方案,介绍了播放器主要模块的功能,设计与实现方法.我们将该设 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
author-avatar
rge4688618
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有