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

Fragment初识

概述 官方API ---- Fragment是什么 Android 在 Android 3.0(API 11 级)中引入了Fragment,主要是为了给大屏幕(如平板电脑)上更加动态和灵活的 UI 设计提供支持...这特别重要,因为模块化片段让您可以通过更改片段的组合方式来适应不同的屏幕尺寸。 在设计可同时支持平板电脑和手机的应用时,您可以在不同的布局配置中重复使用您的片段,以根据可用的屏幕空间优化用户体验。...例如,在手机上,如果不能在同一 Activity 内储存多个片段,可能必须利用单独片段来实现单窗格 UI。...如果引用的是V4包中的类,getFragmentManager( )不能使用,需要改成getSupportFragmentManager( ) ---- 创建一个Fragment 静态加载Fragment...UI控件 TextView tv = (TextView) findViewById(R.id.textview); tv.setText("我在Act中获取到了Fragment

1.2K20

安卓UI

- Android 应用界面 界面是布局和微件的层次结构形式构建而成。布局是 ViewGroup 对象,即控制其子视图在屏幕上的放置方式的容器。微件是 View 对象,即按钮和文本框等界面组件。...您的应用必须在此文件中声明其所有组件,该文件必须位于应用项目目录的根目录中。 - 应用资源 应用资源是指代码使用的附加文件和静态内容,例如位图、布局定义、界面字符串、动画说明等。...应将各类资源放入项目 res/ 目录的特定子目录中。 - 布局容器 布局可定义应用中的界面结构(例如 Activity 的界面结构)。...Fragment 和子级 Fragment 之间传递结果 如需将结果从子级 Fragment 传递到父级 Fragment,父级 Fragment 在调用 setFragmentResultListener...获取对 Fragment 的引用来调用片段中的方法。

1.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    再看LayoutInflater,这次你可能又会有新的认识

    这里我不想在文章中带着大家一步步追源码,这样文章看起来可能会又累又枯燥,因此我就只贴出一些我认为比较关键的代码。...每个布局都可以包含若干个子布局,每个子布局又可以继续包含子布局,以此构建出任意样式的View呈现给用户。 因此,我们大致可以明白,每个布局它都是要有一个父布局的。...当然也是可以的,这也是为什么root参数被标为@Nullable的原因。 但是如果我们inflate出来了一个没有父布局的布局,又该如何去展示它呢?...而实际上则不然,它们其实是用于设置View在布局中的大小的,也就是说,首先View必须存在于一个布局中才行。...崩溃信息如下: 这个崩溃信息是在说,我们正在添加一个子View,但是这个子View已经有父布局了,需要让父布局先调用removeView()移除子View后才能添加。

    63100

    用 Kotlin 写 Android ,难道只有环境搭建这么简单?

    不要 findViewById 作为第一篇介绍 Kotlin 写 Android 的文章,绝对不能少的就是 kotlin-android-extensions 插件了。...在 gradle 当中加配置: apply plugin: 'kotlin-android-extensions' 之后,我们只需要在 Activity 的代码当中直接使用在布局中定义的 id 为...如果让大家自己实现一套机制来完成上面的功能,大家肯定会想,我首先得解析一下 XML 布局文件吧,并把里面的 View 存起来,这样方便后面的查找。我告诉大家,Kotlin 也是这么干的!...布局文件名>.* 几个意思?Kotlin 编译器为我们创建了一个包?...注意到,这里的 packageFqName 其实就是我们前面提到的 kotlinx.android.synthetic.main.布局文件名> 不对呀,怎么创建了两个包呢?

    8.1K00

    源码分析 | AppCompatActivity-setContentView 之我大意了

    背景 故事是这样开始的 有一天,我发现自己写的布局没有 按照我的想法打印 带上了莫名其妙的开头 有一天,两个年轻人,不讲武德 非要告诉我这是 AppCompatActivity 的原因 我不信...他们偷袭,显然是有备而来 我大意了 我没有闪 今天,我要自证事实 混元门代码 第三代大弟子,打工牛子 参见 熟悉的味 为什么会这样,明明是一个普通的TextView,为什么变成了MaterialTextView...顺藤摸瓜 打工人,打工魂,我乃混元门… 呸,跑题了,我们进入正轨,今天非要扒了你的裤衩子。...我为什么会知道呢?翻译啊,ohhhh。...哦呵呵呵,原来这里是对我们的默认的 View 进行了替换,这也就是为什么我们使用AppCompatActivity 打印出来的子 View 自带了前缀显示。

    36520

    Android开发笔记(七十四)布局文件优化

    include/merge 布局优化中常常用到include/merge标签,include的含义类似C代码中的include,意思是直接把指定布局片段包含进当前的布局文件。...include适用于多个布局文件中存在相同的xml片段,比如说相同的标题栏、相同的广告栏、相同的进度栏等等。...include子布局文件的根节点可以是LinearLayout或RelativeLayout或FrameLayout,可是上级布局文件往往已经有了相同的视图节点,这时子布局的根节点就变成冗余的了,但是布局文件又必须有根节点...不要急,merge标签便是处理这个问题的,merge要和include配合使用,也就是说,merge只能是include子布局文件的根节点,且merge无需设置额外的属性。...merge标签代替了根节点LinearLayout、RelativeLayout和FrameLayout原来的位置,只是告诉编译器:我是个占位的合并标签,不需要对我做布局处理;这样app在渲染UI时,只是简单合并

    1.2K30

    Android开发笔记(一百一十九)工具栏ToolBar

    Toolbar 在前面的博文《Android开发笔记(二十)顶部导航栏》中,我们学习了ActionBar的用法,可是ActionBar着实是不怎么好用,比如文字风格不能定制、图标不能定制,而且还存在低版本的兼容性问题...为此,Android提供了加强版的工具栏控件即Toolbar,因为Toolbar继承自ViewGroup,而且可在布局文件中像其它布局视图一样使用,所以灵活性大大的提高了。...导入android-support-v7-appcompat Toolbar包含在android-support-v7-appcompat.jar包中,但app工程还不能直接使用这个jar包,因为v7...-appcompat是一个完整的工程,jar包里面大量引用了工程中的图片资源,所以我们要先把v7-appcompat导入为一个库工程,然后app工程再引用这个库工程。...下面是个布局例子片段: <android.support.v7.widget.Toolbar android:id="@+id/tl_head" android

    1.9K30

    Android布局优化之ViewStub、include、merge使用与源码分析

    大家好,又见面了,我是你们的朋友全栈君。 在开发中UI布局是我们都会遇到的问题,随着UI越来越多,布局的重复性、复杂度也会随之增长。...此时如果通过findViewById来找my_title_parent_id这个控件,然后再查找my_title_parent_id下的子控件则会抛出空指针。...我们注意看注释5处,这里就解释了为什么include标签和被引入的布局的根元素都设置了id的情况下,通过被引入的根元素的id来查找子控件会找不到的情况。...findViewById的问题,注意ViewStub中是否设置了inflatedId,如果设置了则需要通过inflatedId来查找目标布局的根元素。...在开发过程中,我们一定要尽量去深究一些常用技术点的本质,这样才能避免出了问题不知如何解决的窘境。追根究底才能知道为什么是这样,也是自我成长的必经之路。

    1.2K20

    Android开发之那些好用的数据结构与API(二)

    在 Android开发之那些好用的数据结构与API 一文中提到了Android中一些好用的数据结构和API,这次继续补充几个我在项目中用到的好用的但是不是人人都知道的东东 ~~ 1、android...:digits 在Android开发中,经常要设置EditText为密码显示,但是通常要求密码只能是 **字母和数字 . _ **的组合,此时就可以用该属性进行过滤 <EditText...setEmptyView.png 注意 经过本人测试,如果ListView包含在某些下拉刷新框架中,这样做是没有效果的,应该是冲突了。...4、android:duplicateParentState="true" 该属性可以让子View跟随其Parent的状态。...常见的使用场景是某个按钮特别小,为了设置点击事件,给其包裹一层Parent布局,将点击事件写到Parent上,如果希望被包裹按钮的点击效果对应的Selector继续生效的话,就可以使用它了,来个有说服力的测试案例

    67560

    smartimageview&常见的开源代码

    github上搜索开源框架android-smarty-imageview,下载压缩包,拷贝我们之前写的网络图片查看器布局。...解压下载包里面的数据,找到java源码拷贝到我们的项目里,这时我们可以看到这个包下面有个SmartyImageView.java的自定义控件,SmartImageView是继承自ImageView 当我们在布局文件中使用...ImageView时,可以直接写,那是因为这个类是包含在android.jar的包里面,使用自定义的时候,一定要加上包名 获取SmartImageView对象,通过findViewById()方法 调用...SmartImageView对象的setImageUrl(url,fallbackResource,loadingResource)方法,参数:url是String类型的图片路径,另两个一个是下载失败时显示和正在下载时显示的...R.id.et_path); } public void getInternetImg(View v){ SmartImageView siv=(SmartImageView) findViewById

    59440

    安卓ExpandableListView的详细使用教程(附代码解析过程)

    大家好,又见面了,我是你们的朋友全栈君。...、实现效果   ExpandableListView又称可扩展的ListView,简单来说长这个样: 每一个一级布局下面又可以展开二级布局。...二、实现步骤 使用ExpandableListView主要有三个步骤: 编写父布局 编写子布局 适配器的书写 1.编写父布局parent.xml   父布局其实很简单,就是两个并排的TextView,用于展示课程名字和分数...child.xml   子布局就是多个TextView列在一起,用于展示成绩的详细信息: 布局的视图,也就是各种课程的名称以及分数: getChildView(),返回子布局里面的视图,也就是每门学科的详细信息: GradeAdapter的详细代码为

    1.2K20

    开发工具总结(1)之图文并茂全面总结上百个AS好用的插件(上)

    首先,我分门别类,按类型把功能类似的的都放在一起。 其次,我对每一个插件做了一个很精确的讲解,图文并茂。另外把一些注意事项,以及优缺点都写的清清楚楚,这是我自己使用中总结出来的(极个别的除外)。...说明:   该插件可以依次通过以下6种方式来逐一尝试获取目标布局文件名,优先级从高到低,一旦有一个方法获取到了有效的布局文件名, 就会展示对应布局文件的所有拥有 id 的 View 控件,然后可以选择生成对应的...,非常痛苦 2.当我们有一些非常棒的代码需要拿到其他项目使用,但是我们发现,那个项目对第三方库的使用是 有限制的,我们不能使用butterknife,这时候,我们又得从注解改回findviewbyid...针对上面的两种情况,如果view比较少还好说,如果有几十个view,那么我们一个个的手动删除注解, 写findviewbyid语句,简直是一场噩梦(别问我为什么知道这是噩梦) 所以,这种有规律又重复简单的工作为什么不能用一个插件来实现呢...【具体能不能兼容最新的dagger2,还没研究,博主对这个用的少,有兴趣的小伙伴欢迎去尝试,有结果之后别忘了在博客下面留言告诉我一声,感谢大家。】 ?

    99210

    安卓笔记一

    .写业务逻辑 1.通过布局文件中对控件配置的id,在activity中可以获取控件的对象,Edittext Button findViewById(int id); 2.为按钮设置点击事件...获取到 我要拨打的号码 首先我要 找到 文本框     EditText et_number = (EditText)findViewById(R.id.et_number);     String number...在布局文件中为控件添加一个onclick属性,在布局对应的Activity中写一个一onclick属性值为名的方法,要public,传一个View类型的参数。比较适合做简单的测试。...padding:当前控件中的子控件相对于当前控件四周的间距。 2.相对布局 RelativeLayout 都是从左上角开始布局,要控制位置需要设置每个控件相对于其他控件的位置。...:垂直居中 layout_centerInParent:位于父窗体的中间 3.帧布局 FrameLayout 帧布局中的子控件都是一层一层向上叠加的。

    67410

    从0系统学Android--3.6 RecyclerView

    我的想法是这样的,虽然现在 ListView 已经被 RecyclerView 替代了,但是本系列作为入门系列,力求内容完整!...首先在内部定义了一个类 ViewHolder 这个类是继承自 RecyclerView.ViewHolder 的,在构造方法中需要传入一个 View 参数,这个参数就是我们 RecyclerView 的子项的最外层的布局...为什么 ListView 很难实现的效果在 RecyclerView 上这么轻松就实现了呢?...当然如果你的子项布局的宽度设置成很小,那么就不会缩小了,效果就是子View 和 子 View 之间有很大的空隙,导致不美观。...其实不是这样的,ListView 的点击事件上的处理并不是那么好,setOnItemClickListener() 方法注册的只是子项的点击事件,如果我想点击子线里面的某一个按钮,通过这种方式就没法直接实现了

    85420

    Android性能优化系列之布局优化

    ,本篇博客,我就来总结一下UI布局优化的相关技巧。...("new Title"); 那么使用findViewById(R.id.my_foot_parent_id)为什么会报空指针呢?...我们注意看注释5处,这里就解释了为什么include标签和被引入的布局的根元素都设置了id的情况下,通过被引入的根元素的id来查找子控件会找不到的情况。...注意这里我对ViewStub的实例进行了一个非空判断,这是因为ViewStub在XML中定义的id只在一开始有效,一旦ViewStub中指定的布局加载之后,这个id也就失败了,那么此时findViewById...某布局作为子布局被其他布局include时,使用merge当作该布局的顶节点,这样在被引入时顶结点会自动被忽略,而将其子节点全部合并到主布局中。

    1K20

    Android开发笔记(一百二十三)下拉刷新布局SwipeRefreshLayout

    SwipeRefreshLayout的旧版与新版之间的界面区别主要有: 1、旧版的进度条是布局顶部的一条横线,而新版的布局顶部的一个圆圈。...新旧两版的v4包见本文末尾的代码工程。 下面是旧版SwipeRefreshLayout的下拉刷新效果截图: ?...首先要注意:在布局文件中,android.support.v4.widget.SwipeRefreshLayout下面只能有一个直接子视图,如果有多个子视图,那么将只展示第一个子视图,后面的子视图将不予展示...上面我们看到搭配ListView的情况下,在刷新开始与刷新结束时,提示文字的展示与隐藏过程有点突兀,都是一下子展示和一下子隐藏,缺乏动画效果,使人觉得生硬呆板。...上面两种思路都有对应的实现代码,可是我觉得,SwipeRefreshLayout作为Android的原生控件,就应该让它去做它擅长的事情。

    2.1K30

    你真懂的ViewStub,include,merge么

    注意事项 使用include最常见的问题就是findViewById查找不到目标控件,这个问题出现的前提是在include时设置了id,而在findViewById时却用了被include进来的布局的根元素...例如上述例子中,include时设置了该布局的id为my_title_ly,而my_title_layout.xml中的根视图的id为my_title_parent_id。...此时如果通过findViewById来找my_title_parent_id这个控件,然后再查找my_title_parent_id下的子控件则会抛出空指针。...2.解析include的布局的根元素 3.获取include包含布局的布局属性并设置 4.解析根元素下的子view 5....findViewById的问题,注意ViewStub中是否设置了inflatedId,如果设置了则需要通过inflatedId来查找目标布局的根元素。

    42820

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券