-
initView();
initEvent();
setSelect();
内容可变的控件 对应一个adapter 和一般为list类型的数据
extract method
查看全部 -
mark查看全部
-
mark查看全部
-
可以的查看全部
-
优化布局层次 1,include 2,merge 3,ViewStub查看全部
-
优化布局层次 include merge ViewStub查看全部
-
Fragment实现tab查看全部
-
实现方法和上节基本类似,不过加上了第三方ViewPagerIndicator控件作为指示器。 使用方法分为三步: 1、在布局中定义布局ViewPagerIndicator加ViewPager 2、按上节步骤写好viewPager适配器 3、为ViewPagerIndicator设置ViewPager查看全部
-
初始化并添加到布局查看全部
-
开启事务查看全部
-
记得提交事务查看全部
-
拿到对象查看全部
-
每个tag单独一个Fragment查看全部
-
ViewPager实现tab类型查看全部
-
Eclipse报出"Jar mismatch! Fix your dependencies"错误,原因:主包和引用包又含有同一名称包名,但二者又不一样,这时就会报错。解决方法:用其中一个替换另一个,使两个包完全一致。 -------------- 导入源代码的style.xml之后,别忘了在配置文件中对<activity>添加属性:android:theme="@style/MyTheme"。将我们自定义的MyTheme主题样式加入到视图中。 ------------- 本节课的做法是所有界面都公用一个Fragment,而不再像之前那样设置多个Fragment并放进一个List里面然后每次返回一个Fragment。原因很简单,本节课的Fragment布局都一样,所以公用一个即可。 实际的开发过程中,依旧是采用之前的做法,也就是使用多个Fragment。 ---------- 以下摘自评论区: Android Studio 导入viewpagerindector最简单的方法: 根build.gradle(注意这里是“根”,也就是最下面的、总体的build.gradle)下加maven那一行 allprojects { repositories { ... maven { url "https://jitpack.io" } } } 在另外的build.gradle中加编译compile那一行 dependencies { ... compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar' } 最后sync。 ---------- 如图,是最后呈现的效果。查看全部
-
总结: Fragment作为内容区域,优势:Fragment管理自己的布局,管理布局内所有控件的逻辑,不会造成MainActivity代码冗余,MainActivity只作为一个调度器,调度显示不同的Fragment、隐藏不同的Fragment。这样便于代码的复用,也便于后期的维护。 如果希望界面能够拖动,就使用ViewPager+FragmentPagerAdapter去实现;如果不需要界面的拖动,例如QQ的信息界面是一个ListView,ListView想添加一个“右滑删除效果”,所以可能不需要ViewPager的效果(因为在拖动时会存在一个判断问题,互相影响),这时就使用Fragment。 ----------------- 一般而言,Android内容可变的控件,例如ViewPager、ListView、GridView,都是一种“模式”:一个控件对应一个适配器,一个适配器对应一个数据源,数据源一般是一个List。查看全部
-
ViewPager和Fragment的比较: ViewPager:所有的布局、所有的控件、所有的事件都会写在MainActivity里面,使得MainActivity非常冗长,不利于代码的维护。 Fragment只管理自己的布局,布局内部的控件、事件也由它自己处理。MainActivity只起到调度的作用。这么一来,所有的控件各归其主,MainActivity的代码也比较容易看得清楚,也有利于后期的维护,维护成本也比较低。 另外,Fragment在适配不同的屏幕尺寸的时候,发挥了它得天独厚的优点。 -------------- 为了实现更好的兼容性,MianActivity继承的是FragmentActivity。 通过 getSupportFragmentManager() 获取 Fragment管理器。 -------------- Android布局优化:include、merge、ViewStub,分别是布局的复用、减少布局层级、按需加载。 推荐网址:http://www.open-open.com/lib/view/open1461376675538.html#articleHeader2查看全部
-
之前遇到的问题:为tab(一个LinearLayout布局)设置点击事件,然后点击tab内部的TextViwe,正常触发点击事件,但点击tab内部的ImageButton,却不触发。原因是ImageButton 本身具有可点击性(TextViwe也有,但默认是关闭的),当我们点击ImageButton时,系统会优先判断 ImageButton 是否存在点击事件,而不是判断它的父容器tab,从而导致不能触发tab的点击事件。 解决方法: 如图,对ImageButton设置属性:android:clickable="false",取消ImageButton的可点击性。 ---------------- Android Studio上为ViewPager设置监听页面变化的监听器,需要调用addOnPageChangeListener()方法。查看全部
-
为什么使用Tab? 合理地使用Tab可以极大地利用Android屏幕资源,因为手机屏幕比较小。 使用Tab也是Android开发中必不可少的技能。 --------- 如图,是bottom布局的部分代码。 其根布局是一个LinearLayout,高度为55dp,orientation="horizontal"。 根布局之下是4个子布局,也是LinearLayout。 每一个子布局都大同小异: <LinearLayout android:id="@+id/id_tab_weixin" android:layout_weight="1" android:orientation="vertical" android:gravity="center" android:layout_width="0dp" android:layout_height="match_parent"> <ImageButton android:id="@+id/id_tab_weixin_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/tab_weixin_pressed" android:background="#00000000"/> <!--#00000000:按钮自身的背景设置为透明--> <TextView android:text="微信" android:textColor="#ffffff" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> ---------------- 设置无标题界面: requestWindowFeature(Window.FEATURE_NO_TITLE)必须在setContentView(R.layout.activity_main)之前。查看全部
-
在模仿微信布局的时候(布局是垂直分布的;而top高度为45dp,bottom高度为55dp): <include layout="@layout/top"/> <android.support.v4.view.ViewPager android:id="@+id/id_viewpager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <include layout="@layout/bottom"/> 发现bottom布局被完全踢出屏幕!该怎么解决? 将中间的控件ViewPager的高度设为0dp并添加一条属性: android:layout_weight="1" 就可以解决问题。这也就是利用了layout_weight的小技巧。可以完美占据剩余空间,而且不会对已经设置了大小的控件造成影响。查看全部
-
效果图。。查看全部
-
!!!查看全部
举报
0/150
提交
取消