问题:当我添加两个TextView的时候,然后滑动,发现只生成了一个TextView。

就是

<?xml version="1.0" encoding="utf-8"?>
<com.maikefengchao.viewcompflict.HorzonScrollLinearLayout 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="com.maikefengchao.viewcompflict.MainActivity"> <TextView
android:id="@+id/main_tv_first"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_blue_light"
android:text="我是第一页"
android:gravity="center"/> <TextView
android:id="@+id/main_tv_second"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:text="第二页"
android:gravity="center"/>
</com.maikefengchao.viewcompflict.HorzonScrollLinearLayout>

activity_main

public class HorzonScrollLinearLayout extends LinearLayout {
private int mLastX;
private int mLastY;
private int mCurrentX;
private int mCurrentY;
private int mTouchLastX;
private int mTouchLastY; public HorzonScrollLinearLayout(Context context) {
super(context);
} public HorzonScrollLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
} public HorzonScrollLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} @Override
public boolean onTouchEvent(MotionEvent event) {
int scrollX = (int) event.getX();
int scrollY = (int) event.getY();
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int deltaX = mLastX - scrollX;
scrollBy(deltaX,0);
break;
case MotionEvent.ACTION_UP:
break;
}
mLastX = scrollX;
mLastY = scrollY;
return true;
} @Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
boolean isIntercept = false;
mCurrentX = (int) ev.getX();
mCurrentY = (int) ev.getY(); switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
isIntercept = false;
break;
case MotionEvent.ACTION_MOVE:
//往左滑动为正
int deltaX = mLastX - mCurrentX;
int deltaY = mLastY - mCurrentY;
if(Math.abs(deltaX) > Math.abs(deltaY)){
isIntercept = true;
}
else {
isIntercept = false;
}
break;
case MotionEvent.ACTION_UP:
isIntercept = false;
break;
}
mLastX = mCurrentX;
mLastY = mCurrentY;
return isIntercept;
}

HorzonScrollLinearLayout

发生滑动的时候,只有第一个显示出来

为什么会这样子呢,因为我忘了LinearLayout的大小是屏幕的宽度,所以整体大小值有一个屏幕宽,第二个TextView因为第一个TextView占满的屏幕,根据LinearLayout的源码

就是当前容器的宽度大小 减去 上一子类View占用的控件,就是当前子类的可用空间。

解决办法:

1、在java文件中,将TextView加入LinearLayout中,并设置TextView的LayoutParam.width 为 屏幕宽度。

TextView textView = new TextView(this);
textView.getLayoutParams().width = screenWidth;
textView.getLayoutParams().height = screenHeight; mHorzonScroll.addView(textView);

解决办法

最新文章

  1. 【分块打表】bzoj1662 [Usaco2006 Nov]Round Numbers 圆环数
  2. [转]VS2010中如何创建一个WCF
  3. 墙国内新建Rails应用的要点(windows 7环境, Rails 4.2.0)
  4. iOS开发之runtime的运用-获取当前网络状态
  5. HDU 4825 Xor Sum(二进制的字典树,数组模拟)
  6. 如何监控 Tomcat?Zabbix 与 Cloud Insight 对比
  7. Transact-SQL 数据类型转换
  8. centos6 安装 lamp
  9. 简单字符串处理 hdu2532 Engine
  10. bzoj1396
  11. Html 和 Css 的杂乱总结
  12. vba判断文件是否存在的两种方法(转)
  13. CSS Grid 布局
  14. Think you can pronounce these 10 words correctly? You might be
  15. chattr改变文件属性
  16. Maven 搭建spring boot多模块项目(附源码),亲测可以,感谢原创
  17. Android开发学习笔记-自定义组合控件的过程
  18. perl 内置操作符 $^O -判断操作系统环境
  19. Facebook广告目标摘要
  20. JMeter插件管理器

热门文章

  1. Hibernate事务传播性
  2. slf4j绑定log4j失败
  3. django获取某一个字段的列表,values/values_list/flat
  4. 掌握string.h里的常用函数
  5. C# Directory类
  6. HDU3994(Folyd + 期望概率)
  7. 认识Log4j
  8. spark-submit
  9. One Way Roads(搜索)
  10. 配置基于NotePad++工具下的C#开发环境