以编程方式滚动EditText

时间:2010-02-13 06:13:34

标签: android android-widget android-edittext

我正在编写一个简单的caesar-encryption-activity。屏幕上有两个EditTexts,一个是明文,一个是加密的。这是加密的EditText的一个例子 - 明文是类似的。

<EditText 
    android:layout_below="@id/Caesar_Label_CryptText"
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent"
    android:id="@+id/Caesar_Text_CryptText" 
    android:hint="Enter crypted text"
    android:maxLines="2" 
    android:lines="2" 
    android:minLines="2"
    android:inputType="text|textMultiLine|textVisiblePassword"
    android:scrollbars="vertical" 
    android:gravity="top" />

现在输入明文时,我有一个TextChangedListener运行,以编程方式加密并填充crypto-EditText。到目前为止,非常好。

当输入的明文变得非常长时,明文 - EditText会以我的输入滚动,但加密 - EditText会保留在文本的顶部。我真的很喜欢加密的EditText来滚动,所以它总是显示其内容的底线。

如何做到这一点,最好是从onTextChanged() - TextWatcher的方法?

2 个答案:

答案 0 :(得分:7)

好的,找到了。它是光标(在EditText和TextViews上称为Selection)。

这就是我开始工作的方式:

ivClear    // assigned the EditText that has the input
ivCrypt    // assigned the target EditText, that I want to scroll
aText      // the input from ivClear, crypted

然后使用:

    ivCrypt.setText(aText);                               // assign the Text
    ivCrypt.setSelection(ivClear.getSelectionStart());    // scroll

Phew,最后:)总是低估了Spannable的力量;)

答案 1 :(得分:0)

基类android.view.View有方法getScrollX(),getScrollY()和scrollTo()可能会有所帮助,虽然我还没有尝试过。

http://developer.android.com/reference/android/view/View.html#scrollTo(int,int)