重写HorizontalScrollView实现代码控制水平滚动定位
来源:互联网 发布:me042j a支持什么网络 编辑:程序博客网 时间:2024/06/16 12:01
重写HorizontalScrollView实现代码控制水平滚动定位
CenterShowHorizontalScrollView.java
package com.aldx.hccraftsman.view;import android.content.Context;import android.util.AttributeSet;import android.view.Gravity;import android.view.View;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import com.aldx.hccraftsman.R;import com.aldx.hccraftsman.utils.Utils;/** * author: chenzheng * created on: 2017/5/10 16:26 * description: */public class CenterShowHorizontalScrollView extends HorizontalScrollView { private LinearLayout mShowLinear; private Context context; public CenterShowHorizontalScrollView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; mShowLinear = new LinearLayout(context); mShowLinear.setOrientation(LinearLayout.HORIZONTAL); HorizontalScrollView.LayoutParams params = new HorizontalScrollView.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); mShowLinear.setGravity(Gravity.CENTER_VERTICAL); this.addView(mShowLinear, params); } public void onClicked(View v) { if (v.getTag(R.id.item_position) != null) { int position = (Integer) v.getTag(R.id.item_position); View itemView = mShowLinear.getChildAt(position); int itemWidth = itemView.getWidth(); int screenWidth = Utils.getScreenW(context); smoothScrollTo(itemView.getLeft() - (screenWidth / 2 - itemWidth / 2), 0); } } public void onClicked(int position) { View itemView = mShowLinear.getChildAt(position); int itemWidth = itemView.getWidth(); int screenWidth = Utils.getScreenW(context); smoothScrollTo(itemView.getLeft() - (screenWidth / 2 - itemWidth / 2), 0); } public LinearLayout getLinear() { return mShowLinear; } public void addItemView(View itemView, int position) { itemView.setTag(R.id.item_position, position); mShowLinear.addView(itemView); }}
<com.aldx.hccraftsman.view.CenterShowHorizontalScrollView android:id="@+id/tab_horizontalscrollView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#e5e5e5" android:scrollbars="none" />
CenterShowHorizontalScrollView内部已经添加过LinearLayout所以不需要再重复添加了,直接将子view添加进去即可:
mHScrollView.addItemView(itemView, i);
代码控制滚动定位:
mHScrollView.onClicked(view);
或
mHScrollView.onClicked(position);
注:
如果你再oncreate方法里就想调用滚动定位,是看不到效果的,因为这时控件的宽度还没有被测量出来,解决方法:
mHScrollView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if(tempViewList.size()>0) { mHScrollView.onClicked(temp_tab); } mHScrollView.getViewTreeObserver() .removeGlobalOnLayoutListener(this); } });
阅读全文
0 0
- 重写HorizontalScrollView实现代码控制水平滚动定位
- HorizontalScrollView 实现水平滚动
- 利用HorizontalScrollView实现水平滚动
- android 水平滚动 HorizontalScrollView
- HorizontalScrollView 水平滚动控件
- android 水平滚动ScrollView: HorizontalScrollView
- 水平滚动_Android 自定义 HorizontalScrollView
- andoid HorizontalScrollView 水平滚动问题
- 水平滚动视图组件HorizontalScrollView
- Android 自定义 HorizontalScrollView 实现图片左右滚动按钮控制
- android 水平(左右)滚动 HorizontalScrollView
- HorizontalScrollView水平滚动视图的显示
- Android中HorizontalScrollView添加水平滚动图片
- 使用 HorizontalScrollView 实现水平滚动,并点击有相应的反应效果
- Android HorizontalScrollView和ScrollView 水平滚动 垂直滚动
- HorizontalScrollView 初始化滚动的实现
- position: fixed 水平滚动定位
- 水平滚动代码
- 下拦菜单技术演示---修改文本颜色
- 三维渲染中的裁剪总汇
- android studio 适配android7.0 android 6.0拍照调用系统裁剪工具实现头像上传功能
- 15. 3Sum
- MQTT 物联网协议
- 重写HorizontalScrollView实现代码控制水平滚动定位
- Intel笑了: 这才是骁龙835 Win10电脑的真实性能!
- CSDN日报20170517 ——《怎样和虐死人的老项目谈恋爱》
- Android Things SDK用法之PWM篇
- Zookeeper 集群搭建
- JS代码规范工具对比
- 【Android】Audio音频输出通道切换
- Java并发编程CountDownLatch的使用2
- MAC 下手动下载sdk tools 并安装.