2014-03-31 66 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您希望您的病情。

相關問題