2014-03-06 54 views
3

仰視上堆棧溢出的各種問題後,我發現,很多人存在以下問題:防止後臺調整,防止自動聚焦於活動開始

  1. 背景被調整大小時,軟鍵盤打開
  2. 軟件鍵盤在活動開始時打開

這兩個問題的解決方案都在ActivityManifest.xml

要防止在軟鍵盤打開時調整背景圖像的大小,可以將android:windowSoftInputMode="stateVisible|adjustPan"添加到清單中的<activity>

爲了防止活動開始時軟鍵盤打開,您可以將android:windowSoftInputMode="stateHidden"添加到清單中的<activity>

事實上,一個解決方案需要stateHidden,另一個需要stateVisible意味着我不能使用這兩種解決方案。我正在尋找防止軟盤開始盜取活動重點但當用戶確定決定將重點放在EditText防止軟鍵盤調整背景。

這兩個問題都有可行的解決方案嗎?

回答

0

一個解決方案需要stateHidden和其他需要 stateVisible意味着我不能使用這兩種解決方案的事實。

是的。但是,您可以使用stateHidden|adjustPan

鍵盤不會彈出,除非用戶點擊EditText。對你的背景的潛在變化將取決於定位;不會發生背景的縮放。

0

如果您的EditText包裝在父容器中,請爲該容器設置android:focusableInTouchMode="true"。基本上,當活動開始時,讓容器獲得最初的關注點。看看這個link

+0

我以前在別處見過這個解決方案,但它並沒有爲我工作。我正在尋找一些不太冒險的東西。 –

0

佈局的任何部分是一個可滾動的容器(如ListView)?如果是這樣,請嘗試在XML佈局的該項目上設置android:isScrollContainer="false"

如果您有任何含有android:isScrollContainer="true"的視圖,佈局管理器將在彈出鍵盤時嘗試調整佈局的大小,而不考慮android:windowSoftInputMode。

這裏有一個類似的問題:What does android:isScrollContainer do?

0

基本上有兩種方式來滿足您的要求。

  • 只需使用下面的活動標籤

    機器人:windowSoftInputMode = 「adjustPan | stateAlwaysHidden」

    或者

  • 使用 android:windowSoftInputMode="stateVisible|adjustPan"到清單中的活動標籤。

現在您的EditText使用以下android:focusableInTouchMode="true"android:focusable="false"