Unity3d 建立android游戲之后 聊天框被軟鍵盤遮擋。于是去搜索了一下 也更改了AndroidManifest 但是沒有什么效果。依然遮擋聊天框。主Activity 代碼如下 麻煩大神幫忙看看是哪里出了問題~ 謝謝~
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:windowSoftInputMode="adjustPan|stateUnspecified" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="android.app.lib_name" android:value="https://bbs.csdn.net/topics/unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="https://bbs.csdn.net/topics/false" />
</activity>
<activity android:name="uk.co.senab.photoview.activity.ImagePagerActivity" android:windowSoftInputMode="adjustResize|stateUnspecified" android:configChanges="orientation|keyboardHidden|navigation|screenSize|locale|layoutDirection" android:screenOrientation="sensorPortrait" android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen">
</activity>
感激不盡~
uj5u.com熱心網友回復:
Android軟鍵盤顯示模式:Android定義了一個屬性,名字為windowSoftInputMode, 用它可以讓程式可以控制活動主視窗調整的方式。我們可以在AndroidManifet.xml中對Activity進行設定。如:android:windowSoftInputMode="stateUnchanged|adjustPan"
該屬性可選的值有兩部分,一部分為軟鍵盤的狀態控制,另一部分是活動主視窗的調整。前一部分本文不做討論,請讀者自行查閱android檔案。
模式一,壓縮模式
windowSoftInputMode的值如果設定為adjustResize,那么該Activity主視窗總是被調整大小以便留出軟鍵盤的空間。
我們通過一段代碼來測驗一下,當我們設定了該屬性后,彈出輸入法時,系統做了什么。
模式二,平移模式
windowSoftInputMode的值如果設定為adjustPan,那么該Activity主視窗并不調整螢屏的大小以便留出軟鍵盤的空間。相反,當前視窗的內容將自動移動以便當前焦點從不被鍵盤覆寫和用戶能總是看到輸入內容的部分。這個通常是不期望比調整大小,因為用戶可能關閉軟鍵盤以便獲得與被覆寫內容的互動操作。
上面的例子中,我們將AndroidManifest.xml的屬性進行更改:android: windowSoftInputMode = "adjustPan"
模式三 自動模式
當屬性windowSoftInputMode被設定為adjustUspecified時,它不被指定是否該Activity主視窗調整大小以便留出軟鍵盤的空間,或是否視窗上的內容得到螢屏上當前的焦點是可見的。系統將自動選擇這些模式中一種主要依賴于是否視窗的內容有任何布局視圖能夠滾動他們的內容。如果有這樣的一個視圖,這個視窗將調整大小,這樣的假設可以使滾動視窗的內容在一個較小的區域中可見的。這個是主視窗默認的行為設定。
也就是說,系統自動決定是采用平移模式還是壓縮模式,決定因素在于內容是否可以滾動。
切換軟鍵盤:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
//得到InputMethodManager的實體
if (imm.isActive()) {
//如果開啟
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS);
//關閉軟鍵盤,開啟方法相同,這個方法是切換開啟與關閉狀態的
}
關閉軟鍵盤
if(getCurrentFocus()!=null)
{
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(getCurrentFocus()
.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/60001.html
標籤:Unity3D
上一篇:Qt 如何控制多個影片組?
下一篇:游戲專案的代碼怎么入手?
