2010-02-13 150 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