在android开发中,用一个radiogroup控制多个fragment切换是十分常见的需求。但是如果fragment是一个ListView,如何保证滑动的时候通过缺角可以看到下面的listview是一个难点。

直接上图:

(1)完美效果

(2)较差效果

另外,不妨假设缺角的高度是5dp,整个radioGroup的高度是50dp.还要求,不能遮挡listVIew第一个元素。

下面是我的主布局xml代码:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="fill_parent"
  3. android:layout_height="fill_parent"
  4. android:background="#fff5f5f5"
  5. android:orientation="vertical" >
  6.  
  7. <!-- android:background="#fff5f5f5" -->
  8.  
  9. <FrameLayout
  10. android:id="@+id/fragment_container"
  11. android:layout_width="fill_parent"
  12. android:layout_height="fill_parent"
  13. android:layout_alignParentBottom="true"
  14. android:layout_marginTop="45dp"
  15. android:background="#f5f5f5"
  16. />
  17. <!-- 38-8 -->
  18.  
  19. <RelativeLayout
  20. android:id="@+id/head_layout"
  21. android:layout_width="fill_parent"
  22. android:layout_height="wrap_content" >
  23.  
  24. <RadioGroup
  25. android:id="@+idtton_group"
  26. android:layout_width="fill_parent"
  27. android:layout_height="wrap_content"
  28. android:orientation="horizontal" >
  29.  
  30. <RadioButton
  31. android:id="@+id/new_tag_button"
  32. android:layout_width="0dp"
  33. android:layout_height="50dp"
  34. android:layout_weight="1"
  35. android:background="@drawable/tab_radio_selector"
  36. android:button="@color/trans_parent"
  37. android:checked="true"
  38. android:gravity="center"
  39. android:text="最新"
  40. android:textColor="#858585"
  41. android:textSize="@dimen/font_size_38px" >
  42. </RadioButton>
  43.  
  44. <ImageView
  45. android:layout_width="1px"
  46. android:layout_height="fill_parent"
  47. android:background="#d2d2d2" />
  48.  
  49. <RadioButton
  50. android:id="@+id/hot_tag_button"
  51. android:layout_width="0dp"
  52. android:layout_height="50dp"
  53. android:layout_weight="1"
  54. android:background="@drawable/tab_radio_selector"
  55. android:button="@color/trans_parent"
  56. android:gravity="center"
  57. android:text="最热"
  58. android:textColor="#858585"
  59. android:textSize="@dimen/font_size_38px" >
  60. </RadioButton>
  61. </RadioGroup>
  62. </RelativeLayout>
  63. </RelativeLayout>

另外,还需要对每个fragment的listView做如下处理

  1. listView.addHeaderView(view);

这个view的背景设置为和listView中item的rootView背景一致,宽为fill_parent,高为5dp即可。要知道,只有headview是可以跟随item一起滑动的哦,这个才是这个方案实现的关键!

巧妙实现缺角radiogroup控制多个fragment切换和滑动的更多相关文章

  1. ViewPager+RadioGroup实现标题栏切换,Fragment切换

    1.说明: 在使用RadioGroup做标题栏切换的时候,跟ViewPager的滑动有冲突,最后查看了源码+断点调试解决了一些碰到的问题,写一篇博客总结一下,有同样需求的朋友可以借鉴一下,自己以后有用 ...

  2. js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的

    js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样 ...

  3. Vue如何实现swiper左右滑动内容区控制导航tab同时切换高亮

    Vue如何实现左右滑动内容区控制导航tab同时切换高亮,实现的效果是:点击导航按钮时内容区发生改变,左右滑动内容区时导航按钮跟随切换高亮,停留在某个内容区时刷新页面后仍然停留在当前内容区.       ...

  4. “花生壳” + “VisualSVN” 巧妙实现远程代码版本号控制

    近期因为项目须要,要远程訪问svnserver,可是没有固定域名和ip,因此就打算用花生壳申请一个免费的域名构建一个server,再把VisualSVN部署在server上,就能够在外网訪问了(假设你 ...

  5. CSS写一个缺角的div和菱形

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. RadioGroup 和 ViewPager 绑定 实现切换

    package com.jereh.helloworld.activity.day12; import android.app.Activity; import android.os.Bundle; ...

  7. [JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件

    页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空 ...

  8. 利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换

    我比较喜欢听音乐,特别是周末的时候,电脑开着百度随心听fm,随机播放歌曲,躺在床上享受.但碰到了一个烦人的事情,想切掉不喜欢的曲子,还得起床去操作电脑换歌.于是思考能不能用手机控制电脑切换歌曲,经过一 ...

  9. OSG addEventHandler W键显示网格 L键控制光照 F键切换全屏窗口 S键显示统计数据 事件处理器

    #include <osgGA/StateSetManipulator> #include <osgViewer/ViewerEventHandlers> // add the ...

随机推荐

  1. 使用c#获取access中所有表的表名与内容

    以前在网上查过,似乎也可以通过读取access系统表的方法来获得,但是实在想不想来是什么,今天又在网上找了找,终于发现更加方便的方法,更重要的是,这种方法也可以通用所有OLEDB数据源. 这里用到了O ...

  2. JavaScript的一些小用法

    1.if问题: var a="this test"; if (a == "this test") //这样写的时候执行不下去了,不知为什么. 修改: var a ...

  3. TCP协议三次握手过程分析

    TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...

  4. OC中文件的操作

    OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了哪些可以操作文 ...

  5. js访问 xmldom

    加载XML文档:     var xmlDom = new ActiveXObject("MSXML2.DOMDocument");  xmlDom.load("file ...

  6. boost json生成和解析用法

    json c++库还是有很多的,因为工作上经常使用boost,这里选用boost的json,记录下用法. 举个栗子: 如果我们要生成如下格式的json: { "name":&quo ...

  7. SSDT表详解

    SSDT(system service dispatch table) 系统服务分派表 SSPT(system service parameter table) 系统服务参数表 #pragma pac ...

  8. C/C++基本数据类型

    基本类型 C/C++语言有一组基本类型,对应于计算机的基本存储单元和使用这些单元去保存数据的一些常用方式: 基本数据类型如下: Name Description Size* Range* char C ...

  9. js数组与对象的一些区别。

    之前以为js对象即数组,今天用length取对象的长度老是undefined,用concat合并两个对象也不行,于是网上找了一下, 获取对象的长度 function length(o) { var c ...

  10. CodeForces 379 D. New Year Letter

    枚举开头结尾的字母,枚举ac的个数,总AC个数就是两个Fibonacci数列的和..... D. New Year Letter time limit per test 1 second memory ...