Android使用Scroll+Fragment仿京东分类效果
时间:2019-04-13
本文章向大家介绍Android使用Scroll+Fragment仿京东分类效果,主要包括Android使用Scroll+Fragment仿京东分类效果使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下
实现思路:首先说下布局,整个是一个横向的线性布局,左边是一个ScrollView,右边是一个FrameLayout,在代码中动态向ScrollView中添加TextView,然后根据TextView的点击事件使用Fragment替换FrameLayout
首先看下布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context="www.jdsort.com.jdsort.MainActivity"> <ScrollView android:id="@+id/scrollview" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:scrollbars="none"> <LinearLayout android:id="@+id/linearlayout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" /> </ScrollView> <FrameLayout android:id="@+id/framelayout" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3"/> </LinearLayout>
MainActivity代码:
public class MainActivity extends FragmentActivity implements View.OnClickListener { private String[] titles={"常用分类","潮流女装","品牌男装","内衣配饰","家用电器","手机数码","电脑办公","个护化妆","母婴频道","食物生鲜","酒水饮料","家居家纺","整车车品","鞋靴箱包","运动户外","图书","玩具乐器","钟表","居家生活","珠宝饰品","音像制品","家具建材","计生情趣","营养保健","奢侈礼品","生活服务","旅游出行"}; private ScrollView mScrollView; private FrameLayout mFrameLayout; //装装ScrollView的item的TextView的数组 private TextView[] textViewArray; //装ScrollView的item的数组 private View[] views; Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context=this; textViewArray=new TextView[titles.length]; views=new View[titles.length]; initView(); getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new FragmentOne()).commit(); } private void initView() { mScrollView= (ScrollView) findViewById(R.id.scrollview); addView(); changeTextColor(0); mFrameLayout= (FrameLayout) findViewById(R.id.framelayout); } /** * 给ScrollView添加子View */ private void addView() { LinearLayout mLinearLayout= (LinearLayout) findViewById(R.id.linearlayout); View view; for(int x=0;x<titles.length;x++){ view = View.inflate(this, R.layout.item_scrollview, null); view.setId(x); view.setOnClickListener(this); TextView tv= (TextView) view.findViewById(R.id.textview); tv.setText(titles[x]); mLinearLayout.addView(view); textViewArray[x]=tv; views[x]=view; } } @Override public void onClick(View v) { ToastUtils.showToast(this,titles[(int) v.getId()]); changeTextColor((int) v.getId()); changeTextLocation((int) v.getId()); Fragment fragment=null; switch (v.getId()){ case 0: fragment=new FragmentOne(); break; case 1: fragment=new Fragment1(); break; case 2: fragment=new Fragment2(); break; case 3: fragment=new Fragment3(); break; case 4: fragment=new Fragment4(); break; case 5: fragment=new Fragment5(); break; case 6: fragment=new Fragment6(); break; case 7: fragment=new Fragment7(); break; } if(fragment!=null){ getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,fragment).commit(); } } /** * 改变textView的颜色 * @param id */ private void changeTextColor(int id) { for (int i = 0; i < textViewArray.length; i++) { if(i!=id){ textViewArray[i].setBackgroundResource(android.R.color.transparent); textViewArray[i].setTextColor(0xff000000); }else { textViewArray[id].setBackgroundResource(android.R.color.white); textViewArray[id].setTextColor(0xffff5d5e); } } } /** * 改变栏目位置 */ private void changeTextLocation(int index) { //views[clickPosition].getTop()针对其父视图的顶部相对位置 int x = (views[index].getTop() - mScrollView.getHeight() / 2); mScrollView.smoothScrollTo(0, x); } }
源码等上传上去会再次发布链接,如果那里写的不好,欢迎私信,评论指导
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- hihoCoder 1051 补提交卡(贪心,枚举)
- LCA 最近公共祖先
- RMQ问题(线段树算法,ST算法优化)
- 统计0到n之间1的个数[数学,动态规划dp](经典,详解)
- Selenium2+python自动化40-cookie相关操作
- 【干货】PyTorch实例:用ResNet进行交通标志分类
- 2017年浙江理工大学程序设计竞赛校赛 题解&源码(A.水, D. 简单贪心 ,E.数论,I 暴力)
- Selenium2+python自动化41-绕过验证码(add_cookie)
- C语言求最小公倍数和最大公约数三种算法(经典)
- Selenium2+python自动化47-判断弹出框存在(alert_is_present)
- Free Pascal初次体验(有亮点哦)
- HDU 1312 Red and Black(DFS,板子题,详解,零基础教你代码实现DFS)
- Selenium2+python自动化48-登录方法(参数化)
- 51Nod 1003 阶乘后面0的数量(数学,思维题)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- AtCoder Beginner Contest 177 A ~ E
- 2017 年ICPC 中国大陆区域赛铜牌题解
- 搜索(DFS BFS)专题练习
- AtCoder Beginner Contest 171
- AtCoder Beginner Contest 173 A ~ F(已经补完)
- AtCoder Beginner Contest 174 A ~ E
- AtCoder Beginner Contest 170
- 【队伍训练3】Codeforces Round #661 (Div. 3)
- 购物
- 指纹锁(自定义下比较重载下set的圆括号比较)
- 糖糖别胡说,我真的不是签到题目
- 分数线划定
- 小C的记事本
- 简单的数据结构 (deque的应用)
- [HNOI2003]激光炸弹 (二维前缀和)