2010-02-13 104 views
3

我在写一个简单的凯撒加密活动。屏幕上显示两个EditText,一个明文,一个加密。下面是加密的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保留在文本的顶部。我真的很喜欢crypto-EditText滚动,以便它始终显示其内容的底线。

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

+0

有趣的问题。这似乎应该是可能的,但我戳穿了文档并找不到任何东西。 – 2010-02-13 09:12:15

回答

7

好的,找到它了。它是游标(在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的功率;)

+0

谢谢这帮了我很多! – Chris623 2013-07-09 20:58:40

0

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

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

+0

我试过了。我记录了我的cleartext-EditText的getScrollY() - 值。输入文字时,此值会增加。然后我在加密-EditText中使用相同的值来启动scrollToY()。但第二个EditText不会滚动。我调试了scrollTo(),但在我下一次调用scrollTo()时,View中最初更改的mScrollY变量重置为0。我目前怀疑光标位置是罪魁祸首。研究这一点。 – rflexor 2010-02-14 08:25:04