5

我正在写一个简单的凯撒加密活动。屏幕上有两个 EditText,一个是明文,一个是加密的。这是加密的 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 运行,它以编程方式加密并填充该加密编辑文本。到现在为止还挺好。

当输入的明文变得很长时,明文-EditText 会随着我的输入滚动,但加密-EditText 会停留在文本的顶部。我真的很希望 crypto-EditText 滚动,以便它始终显示其内容的底线。

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

4

2 回答 2

10

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

这就是我让它工作的方式:

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

呼,终于 :) 总是低估 Spannable 的力量 ;)

于 2010-02-14T08:39:05.693 回答
0

基类 android.view.View 具有可能有用的方法 getScrollX()、getScrollY() 和 scrollTo(),尽管我没有尝试过。

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

于 2010-02-13T16:02:48.640 回答