很多时候我们一般使用TabHost或者Fragment来做底部栏部分,但是现在有了TabLayout我们可以更容易的达到我们需要的效果,通过TabLayout可以做成微信那种底部可以滑动的效果,也可以做成点击的效果,下面说一下我做的点击效果的底部栏。先贴上布局
代码如下 | 复制代码 |
<com.flyco.tablayout.CommonTabLayout android:id="@+id/tl_3" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="48dp" android:background="#ffffff" tl:tl_iconGravity="LEFT" tl:tl_iconHeight="49dp" tl:tl_iconMargin="5dp" tl:tl_iconWidth="49dp" tl:tl_indicator_bounce_enable="false" tl:tl_indicator_gravity="TOP" /> |
通过简单的属性设置就可以达到效果,然后在这个布局上加一个FrameLayout就ok,
代码如下 | 复制代码 |
public class main extends FragmentActivity { private Context context = this; private ArrayList<Fragment> fragments = new ArrayList<>(); private int[] iconUnselectIds = {//底部点击时显示的图标 R.mipmap.icon_indexl_nav_home_gary, R.mipmap.icon_indexl_nav_shopcar_gary, R.mipmap.icon_indexl_nav_inquiry_gary}; private int[] iconSelectIds = {//未点击时显示的图标 R.mipmap.icon_index_nav_home_yellow, R.mipmap.icon_indexl_nav_shopcar_yellow, R.mipmap.icon_indexl_nav_inquiry_yellow}; private ArrayList<CustomTabEntity> tabs = new ArrayList<>(); private CommonTabLayout tl_3; View view; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initView(); } private void initView(){ //底部栏三个按钮对应的Fragment fragments=new ArrayList<Fragment>(); fragments.add(new text1()); fragments.add(new text2()); fragments.add(new text3()); for (int i = 0; i < 3; i++) {//给底部栏加入图标 tabs.add(new entity(null, iconSelectIds[i], iconUnselectIds[i])); } view=getWindow().getDecorView(); tl_3=ViewFindUtils.find(view, R.id.tl_3); tl_3.setTabData(tabs, getSupportFragmentManager(), R.id.fl_change, fragments); tl_3.setOnTabSelectListener(new OnTabSelectListener() { @Override public void onTabSelect(int position) { } @Override public void onTabReselect(int position) { } }); } } |
这是我在github中看到的案例,经过修改后非常符合自己的要求,简短的代码就可以完成我们的要求。大家有兴趣的可以去github上多看看这方面的。
时间: 2024-08-26 11:12:54