- TabLayout在使用自定义tabView时,Model没有指定为Scroll时,tab与tab之间会有默认的间距,导致tabView显示不全。给TabLayout添加tabPaddingStart和tabPaddingEnd方法,可以设置间距。
<android.support.design.widget.TabLayout
android:id="@+id/tab_statistical"
android:layout_width="match_parent"
android:layout_height="50dp"
app:tabPaddingStart="2dp"
app:tabPaddingEnd="2dp"
app:tabIndicatorHeight="0dp"
app:tabIndicatorColor="@color/purple_main"
app:tabSelectedTextColor="@color/purple_main"
app:tabTextColor="#fff"/>
- RadioButton,CheckBox等控件,在监听onCheckOnCheckedChangeListener方法中,可以用isPressed属性,区分是手指点击,还是代码里面setChecked()触发的。
rgModel.setOnCheckedChangeListener { _, rbId ->
when (rbId) {
rbMute.id -> {
if (rbMute.isPressed) {
setChatModel("0")
}
}
rbNormal.id -> {
if (rbNormal.isPressed) {
setChatModel("1")
}
}
}
}
-
activity设置启动模式为singleinstance后,当不在当前栈时,点击home键,在高版本下会被销毁,在AndroidMainifest.xml给这个activity设置taskAffinity名称,可以确保不会被销毁,同时设置android:excludeFromRecents=“true”,确保任务栏不会出现两个窗口
-
当recyclerview使用了header,并且使用了Grid布局,在使用itemDecoration时,需要减去header的数量
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
GridLayoutManager gridLayoutManager = (GridLayoutManager) parent.getLayoutManager();
//列数
int spanCount = gridLayoutManager.getSpanCount();
int position = parent.getChildLayoutPosition(view);
position = position - mHeadCount;
int column = (position) % spanCount;
if (position >= 0) {
outRect.left = mSpace - column * mSpace / spanCount;
outRect.right = (column + 1) * mSpace / spanCount;
if (position < spanCount) {
outRect.top = mSpace;
}
outRect.bottom = mSpace;
}
}