Android 控制HorizontalScrollView 动态添加View后 控制滚动到最后(最右边)或底部

2017-08-11

   mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if(b){
                    mBtnD.setVisibility(View.VISIBLE);
                    Timer timer=new Timer();
                    timer.schedule(new TimerTask() {
                        @Override
                        public void run() {
                            mHsv.fullScroll(HorizontalScrollView.FOCUS_RIGHT);//控制滚动最右边,FOCUS_DOWN为最底部
                        }
                    },100L);
                }else {
                    mBtnD.setVisibility(View.GONE);
                }
            }
        });



<pre name="code" class="html"><pre name="code" class="html">    <RelativeLayout  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content">  
  
        <HorizontalScrollView  
            android:id="@+id/hsv"  
            android:layout_width="match_parent"  
            android:layout_height="wrap_content"  
            android:layout_centerVertical="true"  
            android:scrollbars="none">  
  
            <LinearLayout  
                android:layout_width="wrap_content"  
                android:layout_height="wrap_content"  
                android:orientation="horizontal">  
  
                <Button  
                    android:id="@+id/btnA"  
                    android:layout_width="wrap_content"  
                    android:layout_height="wrap_content"  
                    android:text="A"/>  
  
                <Button  
                    android:id="@+id/btnB"  
                    android:layout_width="wrap_content"  
                    android:layout_height="wrap_content"  
                    android:text="B" />  
  
                <Button  
                    android:id="@+id/btnC"  
                    android:layout_width="wrap_content"  
                    android:layout_height="wrap_content"  
                    android:text="C" />  
  
                <Button  
                    android:id="@+id/btnD"  
                    android:layout_width="wrap_content"  
                    android:layout_height="wrap_content"  
                    android:visibility="gone"  
                    android:text="D" />  
  
  
                <CheckBox  
                    android:id="@+id/checkBox"  
                    android:layout_width="wrap_content"  
                    android:layout_height="wrap_content"  
                    android:button="@drawable/checkBox_style" />  
            </LinearLayout>  
        </HorizontalScrollView>  
    </RelativeLayout> 


scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部

scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部


需要注意的是,该方法不能直接被调用
因为Android很多函数都是基于消息队列来同步,所以需要一部操作,
addView完之后,不等于马上就会显示,而是在队列中等待处理,虽然很快,但是如果立即调用fullScroll, view可能还没有显示出来,所以会失败
应该通过handler在新线程中更新



注明:本文章属于转载,仅供行业人员学习交流使用,文章版权属于原创作者,在此向原创者致敬,感谢原创作者为大家学习交流提供精品内容。

站方声明:IThao123是为广大互联网从业者免费提供学习交流的平台,如果侵犯了原创著作权,请联系站方删除,给你带来不便,深表歉意。

顶部