android gridlayout动态添加_Android-TabLayout-动态设置TabItem的背景Shape.有坑.......
生活随笔
收集整理的这篇文章主要介绍了
android gridlayout动态添加_Android-TabLayout-动态设置TabItem的背景Shape.有坑.......
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
坑1: TabItem添加id属性,然后用注解绑定,发现找不到,卧槽。。。如下不要去找那个item。用tablayout去动态获取。
<android.support.design.widget.TabLayoutandroid:id="@+id/fkg_tableyout"android:layout_width="match_parent"android:layout_height="32dp"app:elevation="0dp"app:layout_constraintTop_toTopOf="parent"app:tabGravity="center"app:tabIndicatorHeight="0dp"app:tabMode="fixed"app:tabPaddingEnd="16dp"app:tabPaddingStart="24dp"app:tabSelectedTextColor="@color/green_all_bg"app:tabTextAppearance="@style/MyCustomTextAppearance2"app:tabTextColor="@color/white"><android.support.design.widget.TabItemandroid:id="@+id/dfdsf"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="知识库" /><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="新闻资讯" /></android.support.design.widget.TabLayout>坑2 - 这是我的方式,目前测试没有问题: 循环获取fkg_tableyout.getTabCount()的时候,不要直接在UI线程里面,太早了。虽然可以获取到,但是此时tab位置不确定,你如果靠第几个去设置背景,容易出问题。所以建议延迟获取,或者如下:
HashMap<Integer, TabLayout.Tab> tabList = new HashMap<>();fkg_tableyout.addOnTabSelectedListener(new TabLayout.BaseOnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {// 这里才是加载完后获取对应位置的数据,不然会错位的if (tabList.size() <= 0) {for (int i = 0; i < fkg_tableyout.getTabCount(); ++i) {tabList.put(fkg_tableyout.getTabAt(i).getPosition(), fkg_tableyout.getTabAt(i));}}if (0 == tab.getPosition()) {ViewCompat.setBackground(tabList.get(0).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_white_shape));ViewCompat.setBackground(tabList.get(1).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_green_shape));} else {ViewCompat.setBackground(tabList.get(0).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_green_shape2));ViewCompat.setBackground(tabList.get(1).view, mContext.getResources().getDrawable(R.drawable.tab_green_stroke_solid_white_shape2));}}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});3. 建议最好还是动态创建Tab,然后添加,那样比较靠谱。。 网上有类似动态修改的方式,你可以参考,遇到问题,多调试吧。。我也是折腾了一久。。。
这是Tablayout的配置。。。
<!--app:tabBackground="@drawable/tab_selector"--><android.support.design.widget.TabLayoutandroid:id="@+id/fkg_tableyout"android:layout_width="match_parent"android:layout_height="32dp"app:elevation="0dp"app:layout_constraintTop_toTopOf="parent"app:tabGravity="center"app:tabIndicatorHeight="0dp"app:tabMode="fixed"app:tabPaddingEnd="16dp"app:tabPaddingStart="24dp"app:tabSelectedTextColor="@color/green_all_bg"app:tabTextAppearance="@style/MyCustomTextAppearance2"app:tabTextColor="@color/white"><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:id="@+id/dfdsf"android:layout_height="wrap_content"android:text="知识库" /><android.support.design.widget.TabItemandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="新闻资讯" /></android.support.design.widget.TabLayout>效果:
我之前都是动态创建的,哈哈。。这次尝试了不太一样的方式.......喵....
总结
以上是生活随笔为你收集整理的android gridlayout动态添加_Android-TabLayout-动态设置TabItem的背景Shape.有坑.......的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 通信工程专业的一些小知识点
- 下一篇: android 渠道方案,Android