我有一个ScrollView环绕我的整个布局,以便整个屏幕可滚动.我在这个ScrollView中的第一个元素是一个HorizontalScrollView块,它具有可以水平滚动的功能.我在horizontalscrollview中添加了一个ontouchlistener来处理触摸事件并强制视图"捕捉"到ACTION_UP事件上最近的图像.
所以我想要的效果就像股票android主屏幕,你可以从一个滚动到另一个,当你举起手指时,它会捕捉到一个屏幕.
这一切都很有效,除了一个问题:我需要从左到右几乎完全水平滑动,以便ACTION_UP进行注册.如果我至少垂直滑动(我认为许多人往往会在他们的手机上左右滑动),我会收到ACTION_CANCEL而不是ACTION_UP.我的理论是,这是因为横向视图滚动视图位于滚动视图内,并且滚动视图正在劫持垂直触摸以允许垂直滚动.
如何在水平滚动视图中禁用滚动视图的触摸事件,但仍允许在滚动视图中的其他位置正常垂直滚动?
这是我的代码示例:
public class HomeFeatureLayout extends HorizontalScrollView {
private ArrayList<ListItem> items = null;
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;
private static final int SWIPE_MIN_DISTANCE = 5;
private static final int SWIPE_THRESHOLD_VELOCITY = 300;
private int activeFeature = 0;
public HomeFeatureLayout(Context context, ArrayList<ListItem> items){
super(context);
setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
setFadingEdgeLength(0);
this.setHorizontalScrollBarEnabled(false);
this.setVerticalScrollBarEnabled(false);
LinearLayout internalWrapper = new LinearLayout(context);
internalWrapper.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
internalWrapper.setOrientation(LinearLayout.HORIZONTAL);
addView(internalWrapper);
this.items = items;
for(int i = 0; i< items.size();i++){
LinearLayout featureLayout = (LinearLayout) View.inflate(this.getContext(),R.layout.homefeature,null);
TextView header = (TextView) …Run Code Online (Sandbox Code Playgroud) android horizontalscrollview ontouchlistener android-scrollview
我真的很想找到垂直和水平Scrollview的解决方案.
我读到框架中没有任何实现此功能的视图/布局,但我需要这样的东西:
我需要在其他内部定义布局,子布局必须实现滚动垂直/水平移动.
最初实现了一个逐像素移动布局的代码,但我认为这不是正确的方法.我尝试使用ScrollView和Horizontal ScrollView,但没有任何工作像我想要的那样,因为它只实现垂直或水平滚动.
Canvas不是我的解决方案,因为我需要在某些子元素中附加侦听器.
我能做什么?
我在listview项目中使用view pager.我想在视图寻呼机中显示图像,但延迟加载不能使用它.请给我任何解决方案.我尝试了很多延迟加载文件,但有些正在运行.有些人持有UI.
我现在使用的代码工作正常,但没有第一次显示图像.我必须向下滚动列表视图然后向上滚动然后才显示.我不知道有什么问题请给我解决一下我要做的事情?
我发布我的适配器代码: -
这是我的getview代码:
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater mInflater = (LayoutInflater) objProp.activity
.getApplicationContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
v = mInflater.inflate(R.layout.adapter_walllayout, null);
}
// Get Controls
final viewHolder vh = new viewHolder();
vh.txtview_Question = (TextView) v.findViewById(R.id.textView1);
vh.textview_CommentCount = (TextView) v
.findViewById(R.id.textVew_WallTotalComments);
vh.textview_LikeCount = (TextView) v
.findViewById(R.id.textVew_WallTotalokay);
vh.ViewPager_Images = (ViewPager) v.findViewById(R.id.pager);
vh.imageview_Profile = (ImageView) v
.findViewById(R.id.imageview_userImage);
vh.textview_PostDate = (TextView) v
.findViewById(R.id.textView_PostDate);
vh.textview_UserName = (TextView) v
.findViewById(R.id.textVew_WallUserName);
// …Run Code Online (Sandbox Code Playgroud)