当我们执行addTab方法添加Tab的时候,最后会调用到
dispatchTabSelected
方法,在
dispatchTabSelected
方法里面调用
addOnTabSelectedListener
的
onTabSelected()
方法。但是这个时候,mSelectedListeners 为空(因为这个时候我们还没有设置OnTabSelectedListener),因此,就没有回调到
onTabSelected
。
解决方案:
1.先设置TabLayout监听事件
2.然后再初始添加Tab
当我们执行addTab方法添加Tab的时候,最后会调用到 dispatchTabSelected方法,在dispatchTabSelected方法里面调用addOnTabSelectedListener 的onTabSelected()方法。但是这个时候,mSelectedListeners 为空(因为这个时候我们还没有设置OnTabSelectedListener),因此,就没有回调到onTab...
哎,造化弄人,帮一个粉丝改代码,硬是报错,改半天改不出个所以然…很是郁闷。
后来发现,是因为版本问题= =,我的版本比较低,是
android
包,他的版本高,是
android
x包,这就导致依赖导入的包不一样,并且引入
Tabl
ay
out和
View
Page
r的方式也不一样了!
Android
X中使用
TabL
ay
out需要导入的依赖
implementation "com.google.
android
.m...
布局代码:activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearL
ay
out xmlns:
android
="http://schemas.
android
.com/apk/res/
android
"
xmlns:app="http://schemas.
android
.com/apk/res-auto"
xmlns:tools="http
最近在使用
TabL
ay
out+
View
Page
r+
fragment
时,发现个问题,
TabL
ay
out中
Tab
始终
无法
点击,最后网上查找半天才发现是布局问题,原来布局是
<?xml version="1.0" encoding="utf-8"?>
<
android
x.constraintl
ay
out.widget.ConstraintL
ay
out xmlns:
android
="http://schemas.
android
.com/apk/res/
android
"
xmlns:app=
开发
中遇到了个问题就是
Fragment
嵌套
View
Page
View
page
再嵌套
Fragment
然后首次进入时能够正常显示 然后同一个Activity里切换后 再回来就看不到了
然后百度了以后才知道在
View
Page
里的要用 getChlid
Fragment
Manager() 不要用getSupport
Fragment
Manager() 不然会造成数据丢失 也就不显示了
安卓第二次进入
view
Page
r的时候 ,
fragment
不显示
我之前这样写的
get
Fragment
Manager().beginTransaction().replace(R.id.container,new Code
Fragment
()).commit();
iv_code.setOnClickListener(v->{
getSupport
Fragment
Manager().beginTransaction().replace(R.id.conta
写一个demo时发现,其中
TabL
ay
out作为底部导航栏,
默认
选中
竟然
无法
回调on
Tab
Selected,而选择其他Position时,可以正常回调回来
原因是因为我们是先add
Tab
这个时候还没有绑定回调方法,所以应该是先是设置回调,而后add
m
TabL
ay
out = find
View
ById(R.id.
tab
_l
ay
out);
m
TabL
ay
out.addOn
Tab
SelectedListener(new
TabL
ay
out.On
Tab
SelectedListen
1.
tabl
ay
out的
tab
选中
的
监听
addOn
Tab
SelectedListener项目中的界面需要用
view
page
r+
tabl
ay
out+
fragment
来实现 实现起来相对来说很简单,但是现在有的需求是在
第一个
fragment
的外面显示一个按钮,在其他的页面不显示这个时候就用到了这个
监听
方法,先看一下图片听方法,先看一下图片 图中可以看到只有学生界面才有筛选按钮 但是后面都没有 一切bb都是没有用的 上代码
2.修改
tabl
ay
out的下划线指定宽度
加上去就搞定
当然了 具体可以参
最近在做项目的时候,遇到了
TabL
ay
out +
View
Page
r2 +
Fragment
的技术实现。一般
TabL
ay
out自带的
默认
字体并不能满足设计老师的需求。尽管有 app:
tab
TextAppearance 这个属性可以自定义
默认
的大小,但往往也是
无法
达到预期的效果。因此我们需要对
TabL
ay
out的
Tab
进行一个自定义的样式,具体的方式网上很多都可以查到,核心做法就是用自定义的
View
赋值给
TabL
ay
out的custom
View
。具体代码如下:
list?.forEach { d
最早是用
VIew
Page
+
TabL
ay
out 搭建的 ,
官方为何要用
View
Page
2 替换
View
Page
?
view
page
r和
view
page
r2原理和使用
去年年初 google官网上更新了
view
page
r2, 支持垂直滚动, 重写之前的
view
page
r.
我们以前项目中使用的是
View
page
最近替换为
View
Page
2
首先你会发现问题所在,解决,解决不了?
换控件,升级控件,解决问题,代码优美简洁。
View
Page
r2是Google 在
android
x 组件包里增
view
page
r+
tabl
ay
out都不陌生了。在很多地方都有用到过。这两天碰到个需求要求点击
tabl
ay
out时
出现
下拉框选择分类然后动态刷新
view
page
r的当前界面。
首先对
view
page
r+
tabl
ay
out做一个简单用法的总结。
1、在界面布局文件xml中添加
<
android
.support.design.widget.
TabL
ay
out
好的,以下是一个
Android
开发
中使用
TabL
ay
out 和
View
Page
r 的例子:
1. 在布局文件中添加
TabL
ay
out 和
View
Page
r:
<
android
.support.design.widget.CoordinatorL
ay
out
xmlns:
android
="http://schemas.
android
.com/apk/res/
android
"
xmlns:app="http://schemas.
android
.com/apk/res-auto"
android
:l
ay
out_width="match_parent"
android
:l
ay
out_height="match_parent">
<
android
.support.design.widget.AppBarL
ay
out
android
:l
ay
out_width="match_parent"
android
:l
ay
out_height="wrap_content">
<
android
.support.design.widget.
TabL
ay
out
android
:id="@+id/
tab
_l
ay
out"
android
:l
ay
out_width="match_parent"
android
:l
ay
out_height="wrap_content"
app:
tab
Gravity="fill"
app:
tab
Mode="fixed"/>
</
android
.support.design.widget.AppBarL
ay
out>
<
android
.support.v4.
view
.
View
Page
r
android
:id="@+id/
view
_
page
r"
android
:l
ay
out_width="match_parent"
android
:l
ay
out_height="match_parent"
app:l
ay
out_behavior="@string/appbar_scrolling_
view
_behavior"/>
</
android
.support.design.widget.CoordinatorL
ay
out>
2. 在 Activity 中设置
TabL
ay
out 和
View
Page
r:
public class MainActivity extends AppCompatActivity {
private
TabL
ay
out m
TabL
ay
out;
private
View
Page
r m
View
Page
r;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContent
View
(R.l
ay
out.activity_main);
m
TabL
ay
out = (
TabL
ay
out) find
View
ById(R.id.
tab
_l
ay
out);
m
View
Page
r = (
View
Page
r) find
View
ById(R.id.
view
_
page
r);
setup
View
Page
r(m
View
Page
r);
m
TabL
ay
out.setupWith
View
Page
r(m
View
Page
r);
private void setup
View
Page
r(
View
Page
r
view
Page
r) {
View
Page
rAdapter adapter = new
View
Page
rAdapter(getSupport
Fragment
Manager());
adapter.add
Fragment
(new
Fragment
1(), "标签1");
adapter.add
Fragment
(new
Fragment
2(), "标签2");
adapter.add
Fragment
(new
Fragment
3(), "标签3");
view
Page
r.setAdapter(adapter);
private class
View
Page
rAdapter extends
Fragment
Page
rAdapter {
private final List<
Fragment
> m
Fragment
List = new Arr
ay
List<>();
private final List<String> m
Fragment
TitleList = new Arr
ay
List<>();
public
View
Page
rAdapter(
Fragment
Manager manager) {
super(manager);
@Override
public Frag