公告版位

新版部落格:blog.changyy.org

想必還滿常碰到一個 Activity 中,擺幾個 EditText 讓人輸入帳密來送出的表單吧!然而,當送出表單成功後,偶時會很偷懶直接把 mEditText.setText("Info") 且 mEditText.setEnable(false) 來處理,想說這樣又可以重複利用 XD 結果就會碰到開啟 Activity 後,自動 focus 在 EditText 並彈跳出 keyboard 的窘境了。如果動態進行 mEditText.setFocusable(false) 的方式,的確可以避開 focus 的問題,但很奇妙地再動態 mEditText.setFocusable(true) 時,卻會出錯而無法點選該欄位 Orz

最後,找到一些很折衷的辦法...那就是在 EditText 前,先讓某個處的 layout 可以被 focusable 就好 XD 這樣的解法真的是 It just works! 的狀態。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical" >

       <LinearLayout
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:focusable="true"
              android:focusableInTouchMode="true"
              android:gravity="center_vertical">
              <TextView
                     android:layout_margin="5dp"
                     android:layout_width="120dp"
                     android:layout_height="wrap_content"
                     android:text="@string/title_account"
                     android:textAppearance="?android:attr/textAppearanceLarge">
              </TextView>
              <EditText
                     android:id="@+id/edittext_account"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:hint="@string/account_hint"
                     android:ems="10" >
              </EditText>
       </LinearLayout>
       <LinearLayout
              android:id="@+id/linearlayout_password"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:focusable="true"
              android:focusableInTouchMode="true"
              android:gravity="center_vertical">
              <TextView
                     android:layout_margin="5dp"
                     android:layout_width="120dp"
                     android:layout_height="wrap_content"
                     android:text="@string/title_password"
                     android:textAppearance="?android:attr/textAppearanceLarge">
              </TextView>

              <EditText
                     android:id="@+id/edittext_password"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:ems="10"
                     android:hint="@string/password_hint"
                     android:inputType="textPassword" >
              </EditText>
       </LinearLayout>
</LinearLayout>


, ,

changyy 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • shawnba
  • 感謝!有幫助到!