2014-03-31 54 views
2

这是我现在纠缠一会儿,我使用HorizontalScrollView.fullScroll(HorizontalScrollView.FOCUS_RIGHT)它滚动我的ScrollView的权利,但不是所有的方式,它需要滚动条99%右侧,我可以手动滚动其余的方式,但由于某种原因,它不会当我打电话给fullScroll() API。Android - Horizo​​ntalScrollView不会一直滚动

下面是一个示例代码....如果您按下按钮几次,TextView将展开,您将看到问题。

活动: package com.example.test;

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.HorizontalScrollView; 
import android.widget.TextView; 


public class MainActivity extends Activity { 
    TextView tv; 
    HorizontalScrollView hsv; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     tv = (TextView) findViewById(R.id.textView1); 
     hsv = (HorizontalScrollView)findViewById(R.id.horizontalScrollView1); 
    } 

    public void btnOnClick(View v) { 
     tv.append("a"); 
     hsv.fullScroll(HorizontalScrollView.FOCUS_RIGHT);  
    } 
} 

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <HorizontalScrollView 
     android:id="@+id/horizontalScrollView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/textView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="30sp" 
       android:text="push the button" /> 

     </LinearLayout> 
    </HorizontalScrollView> 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="btnOnClick" 
     android:text="Button" /> 

</LinearLayout> 

回答

5

我更新了你的代码。用下面的代码替换你的代码。这将Horizo​​ntalScrollView完美地移动到屏幕的右侧。

更换你的MainActivity.java地下1:

public class AndroidHTMLActivity extends Activity{ 
TextView tv; 
HorizontalScrollView hsv; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    tv = (TextView) findViewById(R.id.textView1); 

} 
public void btnOnClick(View v){ 

    tv.append("a"); 

    System.out.println("tv.getWidth()="+tv.getWidth()); 
    hsv = (HorizontalScrollView)findViewById(R.id.horizontalScrollView1); 
    ViewTreeObserver vto = hsv.getViewTreeObserver(); 
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ 
     @Override 
     public void onGlobalLayout() { 
      hsv.getViewTreeObserver().removeGlobalOnLayoutListener(this); 

      hsv.scrollTo(tv.getWidth(), 0); 
      } 
     }); 


    } 

} 

并通过下面一个替换YOUE XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:id="@+id/ll_parent_layout"> 
<HorizontalScrollView 
    android:id="@+id/horizontalScrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="30dp" 
      android:text="push the button" /> 

    </LinearLayout> 
</HorizontalScrollView> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="btnOnClick" 
    android:text="Button" /> 

</LinearLayout> 

此代码fulfile您希望您的病情。

相关问题