HorizontalListView 中 setSelection() 一种简单实现方式

HorizontalListView 中 setSelection()一种简单实现方式

1.在HorizontalListView类重写setSelection方法:

@Override
        public void setSelection(int position) {
                //TODO: implement
                int positionX = position*this.getWidth();
                int maxWidth = this.getChildCount()*this.getWidth();
                if(positionX <=0){
                        positionX  = 0;
                }
                if(positionX >maxWidth){
                        positionX =maxWidth;
                }
                scrollTo(positionX );
        }

 

2.在布局中加上两条属性:

                <com.huang.view.HorizontalListView
                    android:id="@+id/specialPriceHorListview"
                    android:layout_width="0dip"
                    android:layout_height="30dip"
                    android:layout_weight="8"
                    android:stackFromBottom="true"
                    android:transcriptMode="alwaysScroll" />

 

3.在JAVA代码中调用:

hListView.setSelection( hList.size()-1 );//点击后跳转到最后一行

 

如果还是不能的话。只能这样子做了。

 @Override
 public void setSelection(int position) {
        int positionX = position*this.getWidth();
        int maxWidth = this.getChildCount()*this.getWidth();
        System.out.println("positionX+maxWidth"+positionX+"--"+maxWidth);
       
//        if(positionX <=0){
//                positionX  = 0;
//        }
//        if(positionX >maxWidth){
//                positionX =maxWidth;
//        }
//        scrollTo(positionX );
  
        if (MyUtils.width * position < maxWidth || MyUtils.width * position == maxWidth) {
         scrollTo(MyUtils.width * position);
  }
 }

 

private int scrollToPosition = 1;//用于记录滚动的位置 1开始

   if (scrollToPosition < 4) {
    hListView.setSelection( scrollToPosition );//用于设置滚动的位置
    scrollToPosition ++;
   }else {
    scrollToPosition = 1;//返回第一个
   }

 因为我的屏幕是720*1680吧。滚动640不行,滚动720的倍数就行了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值