首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Notes|细数「八大布局」那些事儿

当前 View 边距 Margins 目标 View 可见性 View.GONE ,还可以使用以下属性设置当前 View 在前者 GONE 情况下 margin。...> 这里再次回顾下当前例子关键内容: 属性 作用 layout_constraintStart_toStartOf 取值 parent 代表与父容器对齐 layout_constraintEnd_toEndOf...android:maxHeight 设置布局最大高度 ConstraintLayout 内部子 View 宽度/高度 0dp,则同等于 match_parent。...使用这块需要注意: 设置宽度/高度百分比,需要先将对应宽/高设置 0dp; 默认值应设置百分比 app:layout_constraintWidth_default="percent" 或 app...而测量 ViewGroup ,还将测量其子集 View。 布局(Layout) 从上到下遍历,通过在测量阶段确定大小来确定子 View 位置。

1.8K00

Android布局优化:include 、merge、ViewStub详细总结

3,如果我们给include所加载layout布局容器设置了id属性,也在include标签设置了id属性,同时需要在代码获取容器控件对象,最好将这两个id设置相同名称!...其实这种情况下:在主界面,标签parent ViewGroup与包含layout容器ViewGroup是相同类型,这里都是LinearLayout,那么则可以将包含layout...容器ViewGroup使用标签代替,从而减少一层ViewGroup嵌套,提升UI渲染性能。...ViewStub是一个不可见View类,用于在运行时按需懒加载资源,只有在代码调用了viewStub.inflate()或者viewStub.setVisible(View.visible)方法才内容才变得可见...这里需要注意一点是,ViewStub被inflate到parent,ViewStub就被remove掉了,即当前view hierarchy不再存在ViewStub,而是使用对应layout视图代替

2K50
您找到你想要的搜索结果了吗?
是的
没有找到

详细介绍安卓布局性能优化之(include 、merge、ViewStub)

include标签 include标签常用于将布局公共部分提取出来供其他layout共用,以实现布局模块化,也是平常我们设计布局最多 include 官方文档 <?...节点或导致解析变慢(可通过hierarchy viewer工具查看布局嵌套情况) 官方文档说明:merge用于消除视图层次结构冗余视图,例如布局是Linearlayout,那么我们又include...3.自定义View如果继承LinearLayout(ViewGroup),建议让自定义View布局文件布局设置成merge,这样能少一层结点。...先来看看布局,一个是主布局,里面只定义二个ViewStub,一个用来控制TextView一个用来控制ImageView,另外就是一个是显示文字TextView布局,一个是ImageView而做布局...赋值android:layout_XX属性会替换待加载布局文件节点对应属性 扩展: Space组件 在ConstraintLayout出来前,我们写布局都会使用到大量margin或padding

1.4K10

DSL In Action

最近在写项目,再次拿出anko这个框架,思考它在UI小组件上可用性。 PS: Anko !...= with(ankoContext) { editText { hint = "Name" } } 官方Demo,将Activity布局方式从 setContentView...怎么把Anko灵活用起来 简单回顾一下上面一节内容: 如果我们拥有一个ViewGroup或者拥有一个Context,就可以用来创建View 因此Anko用法远要比你想象灵活 -> 可以拿到Context...再举一个例子,在BottomSheetDialogFragment,我们拿到Dialog后,需要通过setContView方式来给它设置有个View进去,而我们一般会在XML写好然后Inflater...如果你认真看了上面的内容,并且有自己体会,可以在已有的UI构架很快用上Anko Layout来解决一些轻量级UI构建。比如说List一个Item,或者一个小Dialog之类。

1K20

Android之ViewStub简单使用

viewParent"); } } 可以看到viewParent空或者不是viewgroup才会报这个错误;那么第一次调用时候,肯定是进去了;发现一个方法replaceSelfWithView...移除了;parent.addView()就是把view(也就是我们引用布局)添加到了父布局LinearLayout。...所以当我们第二次再调用inflate方法,viewstubparent已经空了;就会抛出此异常; 调用textView = viewStub.findViewById(R.id.hello_tv...);//获取到textview是空; 而使用textView = findViewById(R.id.hello_tv);就可以直接拿到控件对象了; 实现引用布局显示和隐藏,测试发现使用viewstub... 其实在上面的inflate方法已经其添加了mInflatedViewRef = new WeakReference(view);这个view就是viewstub引用布局; 所以

56530

【谷歌官方文档】1.1 建立第一个APP

可选布局文件 有很多理由使得我们选择在 XML 定义界面布局,而不是在运行时动态生成布局。其中最重要一点是——这可以让你不同大小屏幕创建不同布局文件。...由于 LinearLayout 是整个视图布局,所以通过指定 width 和 height 属性 "match_parent" 可以使其宽度和高度充满整个屏幕。...可以在程序代码通过该标识符引用对象。例如对这个对象进行读和修改操作(在下一课里将会用到)。 需要从 XML 里引用资源对象,必须使用 @ 符号。...android:hint 文本框时候,会默认显示这个字符串。对于字符串 "@string/edit_message" 值所引用资源应该定义在单独文件里,而不是直接使用字符串。...Android Studio中使用模板,Support Library会自动加入我们工程(在Android Dependencies你以看到相应JAR文件)。

2.4K20

Android UI开发中所遇到各种坑

思路是在活动退出,会调用onDestroy方法销毁界面,在这个方法里面想办法隐藏界面即可。找到下面这种方法,但还是不行。还尝试过用基类找到所有edittext然后让它们失去焦点,隐藏软键盘。...第二步,布局里加一个scrollview将你要被顶起视图放进这里,然后软键盘显示时候,就会在scrollview里滚动以获得空间进行显示软键盘。...<activity Android:windowSoftInputMode="adjustResize" 2.merge标签注意点 merge标签只有在布局是FrameLayout才有用,因为安卓所有界面的布局都是...使用后要注意如果在布局,则不能用LayoutInflater来生成一个view,否则会报如下错误,由于我在listviewgetview()里用了这个带有merge布局,所以崩溃了。...root and attachToRoot=true 3.LinearLayout注意点 线性布局默认是水平,要善用weight权重这个属性。

1.3K20

例说 Constraint Layout:初探

ConstraintLayout 继承关系 下图是一些常用 View、ViewGroup 或 Layout 继承关系: ? Figure 2....一个 View 可见性被设置 GONE,相对于它那些 View 仍能保持在正确位置上,也能根据情况重新布局(详见续作《例说(二)》)。 5....(谷歌把自动生成布局节点从 RelativeLayout 变为 ConstraintLayout 自有其道理。)...而在编辑器视图中,View 之所以没有错位,是因为 AS 会在 View 添加后自动增加属性来表示他们在编辑器位置。这个布局代码如下: ?...打开 Autoconnect 功能 Autoconnect 功能打开后(默认为关闭状态),控件被放置到布局内,编辑器就会自动创建 2 个或更多个必要约束将控件相对于其父布局摆放。

2K10

例说 Constraint Layout(三)—— 性能测评

2 实测 2.1 官方 Demo 页面 先来看看官方 Demo 页面,其 CL 和传统布局耗时对比。布局真实展示效果见 Fig. 1,左边传统布局,右边约束布局。...of ConstraintLayout》[1]文中结果 40% 一半,因为效果不够好,又连续多测了几次,并尝试采用不同节点 MeasureSpec 固定值尺寸(全屏和 1080*1920)...另,此节页面节点 MeasureSpec 固定值尺寸不同,对结果并没有影响;而 2.4 节,此值对结果则有一定影响。...在这个比较简单布局,CL 性能提升就比较明显,比 2.2 磁贴风要明显很多,猜测布局明显变复杂,每一个元素上下左右边都同其它元素相关,CL 性能会有一定程度下降。 ?...Fig. 8 性能测试用网格风 RL 和 CL Fig. 9 分别比较了在不同日子测量、节点 MeasureSpec 固定值使用全屏和 1080*1920 性能,可以看到结果不尽相同,所以说两者对布局性能确实是有影响

4.9K40

Android DataBinding 从入门到进阶,看这一篇就够

{ enabled = true } } 一、基础入门 启用 DataBinding 后,这里先来看下如何在布局文件绑定指定变量打开布局文件,选中布局 ViewGroup...nextInt(100)); } [82ad16b2c9ac47d7a601832da96f0b2e~tplv-k3u1fbpfcp-watermark.image] 三、双向数据绑定 双向绑定意思即为数据改变同时使视图刷新...,而视图改变也可以同时改变数据 看以下例子, EditText 输入内容改变,会同时同步到变量 goods,绑定变量方式比单向绑定多了一个等号: android:text="@={goods.name...bind:userInfo="@{userInf}" 对 ViewStub 进行数据绑定,则可以等到 ViewStub Inflate 再绑定变量,此时需要为 ViewStub 设置 setOnInflateListener...,此时就可以通过 BindingAdapter 来实现 需要先定义一个静态方法,之添加 BindingAdapter 注解,注解值是 ImageView 控件自定义属性名,而该静态方法两个参数可以这样来理解

6.1K62

Frida高级特性

多台设备 连接多台设备还是很简单,使用Frida作者oleavr(很多人称他是大胡子,以后就用这个称呼了)我门提供python binding功能。...互联互通 互联互通是指把app捕获内容传输到电脑上,电脑上处理结束后再发回给app继续处理。看似很简单一个功能,目前却仅有Frida可以实现。...> </androidx.constraintlayout.widget.ConstraintLayout> 布局类介绍: A ConstraintLayout is a android.view.ViewGroup...在文章把js和python代码写在了一个文件,最好是把他们分开写,这里不再举例。...写在最后 再前面的apk,通过hook技术很容易绕过了前台校验,由此可见,前台校验是多么不靠谱.这种校验最好都放在后台, 公众号 更多Frida内容,欢迎关注我微信公众号:无情剑客.

1.1K00

关于EditText屏蔽焦点问题,及为什么clearFocus()方法失效了?

我们有时候需求EditText 在不需要时候,无法点击,或者取消它默认焦点。 我们先看看通用解决方法。...而这个在日历却是有用。...而后者,显然是针对触屏情况下,也就是我们点击屏幕某个控件,不要立即执行相应点击逻辑,而是先显示焦点(即控件被选中),再点击才执行逻辑。...,由一个switch控制,switch关闭editText可以输入,有焦点,否则无法点击,无焦点。...总结一下,也就是我们需要在父布局处添加 触控模式true,即就是android:focusableInTouchMode="true",这样清除焦点时候,就会将焦点赋给父布局,而不是重置到第一个EditText

99220

Android 必知必会 - 动态切换着色模式和全屏模式

背景 公司 APP 设计图仅有 iOS 版,对于 Android 平台,它整体算是着色模式,但是在个人页面是全屏模式(沉浸模式),实现设计图,我使用是一个 Activity + 四个 Fragment...实际上,这种情况下『着色模式』是在全屏模式下模拟出来,并不是真正意义上着色模式。...四个 ImageView --> MainActivity.java //响应底部对应 ImageView 被点击事件...对于 Android 4.4 + ( >= 4.4 且 < 5.0 ) 情况,我这里并没有使用网上一些教程:向 DecorView 添加一个高度状态栏高度 View,也就没有黑线问题,而是通过修改布局背景色和布局...操作过程页面并没有配合使用 ActionBar ,使用主题是 Theme.AppCompat.Light.NoActionBar ,不确定是否会有意想不到效果,请在配合 ActionBar 先进行测试或者参考文末相关资料

1K20

Android Jetpack架构组件(八)之DataBinding

使用DataBinding,如果希望在生成绑定类忽略某个布局文件,可以将 tools:viewBindingIgnore="true" 属性添加到相应布局文件视图中,如下所示。...> 在上面的代码,首先在data标签ButtonClickListener类声明对象,在ButtononClick属性传入布局表达式即可。...所有的方法都是static方法,并且每个方法都使用了@BindingAdapter注解,注解声明所操作View属性,使用了DataBinding布局文件被渲染,属性所对应static方法就会自动调用...例如有下面的场景:如果布局中有一个EditText,当用户在输入框输入内容,我们希望对应Model类能够实时更新,这就需要双向绑定,DataBinding同样支持这样能力。...在RecyclerView中使用DataBinding就是如此简单,Listitem数据发生变化时,列表内容也会随之更新。

2K20

Android仿微信标签功能

微信中有对联系人添加标签功能,如下图所示。 ? 这里有三种状态标签,分别的未选择,选中,编辑,由于前两种标签不需要提供输入,所以用TextView实现即可,编辑标签用EditText来实现。...根据对微信标签分析,这里可以这样实现,创建一个EditText,对其软键盘Enter和Delete按键进行监听,输入完成后按下Enter则生成一个标签,添加到LinearLayout。...然后如果标签内文字,按下删除键,就将它前一个标签状态修改为选中状态。同样地,点击未选择标签也可以选中该标签进行删除。...tagView=new ArrayList< (); final List<Boolean tagViewState=new ArrayList< (); //创建编辑标签 final EditText...(params); //添加到layout layout.addView(editText); //对软键盘Enter和Del键监听 editText.setOnKeyListener(new View.OnKeyListener

74710

android之View和ViewGroup介绍

在Android,View比视图具有更广含义,它包含了用户交互和显示,更像Windows操作系统window。...ViewGroup和它孩子们(View和ViewGroup)以树形结构形成了一个层次结构,View类有接受和处理消息功能,android系统所产生消息会在这些ViewGroup和 View之间传递...View View就是显示在屏幕上一个组件(Widget)。 View例子:按钮(Button)、标签(TextView)和文本框(EditText)。...我们经常使用LinearLayout、relativeLayout等都是ViewGroup子类,ViewGroup类中有一个内部类ViewGroup.LayoutParams,我们经常使用LayoutParams...我们也可以自定义自己布局,以方便日后使用和维护,这时我们就需要继承ViewGroup类并在派生类重写ViewGroup一些方法, ViewGroups例子:LinearLayout和FrameLayout

81420

安卓UI

布局所有元素均使用 View 和 ViewGroup 对象层次结构进行构建。View 通常绘制用户可查看并进行交互内容。...然而,ViewGroup 是不可见容器,用于定义 View 和其他 ViewGroup 对象布局结构,如图 所示。...ViewGroup 对象通常称为“布局”,可以是提供其他布局结构众多类型之一,例如 LinearLayoutConstraintLayout。...- 任务 任务是用户在执行某项工作与之互动一系列 Activity 集合。 - 片段 Fragment 表示 FragmentActivity 行为或界面的一部分。...您可以将片段视为 Activity 模块化组成部分,它具有自己生命周期,能接收自己输入事件,并且您可以在 Activity 运行时添加或移除片段(这有点像可以在不同 Activity 重复使用

1.3K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券