首页
学习
活动
专区
工具
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.9K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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视图代替

    2.2K50

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

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

    1.6K10

    基于Android Studio实现 购物商城APP (简单易上手)

    购物商城应用的界面简洁、直观,操作易于上手,为用户提供了一个愉快的购物体验。...> LinearLayout>constraintlayout.widget.ConstraintLayout> 实现了加载购物车数据、显示购物车列表、支付功能的实现...然后,它设置了支付按钮的点击事件,当用户点击支付按钮时,会显示一个支付成功的Toast消息。...在loadDataToListView方法中,它首先对购物车数据进行逆序排序,以便按照添加时间的逆序显示购物车列表。...五、项目总结 启动页:应用启动时显示的欢迎页面。 用户登录/注册功能:用户可以通过输入用户名和密码进行登录或注册新账户。 主页面功能: 顶部轮播图功能:展示热门商品或促销活动的轮播图。

    1.3K11

    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之类。

    1.1K20

    Android之ViewStub的简单使用

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

    64430

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

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

    2.4K20

    例说 Constraint Layout:初探

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

    2.1K10

    例说 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 的性能,可以看到结果不尽相同,所以说两者对布局的性能确实是有影响的

    5K40

    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

    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 控件自定义的属性名,而该静态方法的两个参数可以这样来理解

    8.1K72

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

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

    1.2K20

    Android Jetpack架构组件(八)之DataBinding

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

    2.3K20

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

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

    1K20

    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

    86220

    Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件

    标题图 UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的。View是绘制在屏幕上能与用户进行交互的一个对象。...viewgroup.png Android为我们提供了View和ViewGroup的两个子类的集合,提供常用的一些输入控件(比如按钮,图片和文本域等)和各种各样的布局模式(比如线程布局,相对布局,绝对布局...用户界面布局 在你APP软件上的,用户界面上显示的每一个组件都是使用层次结构View和ViewGroup对象来构成的,比如,每个ViewGroup都是不可见容器,每个ViewGroup视图组用于组织子视图...图片 LinearLayout线性布局 常用属性: id:为该组件添加一个资源id orientation:布局中的排列方式,有两种方式: horizontal水平 vertical竖直 layout_width...表示填充父容器 gravity:控制组件所包含的子元素的对齐方式 layout_gravity:控制该组件在父容器里的对齐方式 background:为该组件添加一个背景图片 LinearLayout

    1.9K20
    领券