我在我的LibGDX Android應用程序表,下面的一些文本框(一行)和下方的按鈕,如何「推高」屏幕(提交)。 我的問題是,如何在表格,textfiels和按鈕上「滑動」,當文本框是焦點(點擊它)和軟鍵盤出現? 換句話說,如何讓軟鍵盤不是來覆蓋我的其他對象。 該解決方案可能這個問題有關: How can i find the height of soft-keyboard in a LibGDX application當顯示軟keybord
非常感謝。
我在我的LibGDX Android應用程序表,下面的一些文本框(一行)和下方的按鈕,如何「推高」屏幕(提交)。 我的問題是,如何在表格,textfiels和按鈕上「滑動」,當文本框是焦點(點擊它)和軟鍵盤出現? 換句話說,如何讓軟鍵盤不是來覆蓋我的其他對象。 該解決方案可能這個問題有關: How can i find the height of soft-keyboard in a LibGDX application當顯示軟keybord
非常感謝。
在您的<activity>
區塊中設置android:windowSoftInputMode
至adjustPan
以獲得您想要的結果。請參閱文檔:https://developer.android.com/guide/topics/manifest/activity-element.html#wsoft
感謝您的快速回答,我嘗試了您的解決方案,但它似乎不適用於libGDX。結果是一樣的,當單擊文本框時,底部對象被軟鍵盤覆蓋。 – JedyKnite
我找到了解決方法,解決了我的問題,它正在工作,但我不認爲太乾淨。 所以,我的情況是:
的問題是,當OnscreenKeybord是可見的,它覆蓋了底部對象(文本字段和按鈕)和滾動的一部分的按鈕表。
我的解決方案/解決方法是:
keyboard = new OnscreenKeyboard() {
@Override
public void show(boolean visible) {
Gdx.input.setOnscreenKeyboardVisible(visible);
// Hmmmm...
container.invalidate();
if (visible) {
// TODO get OsK height somehow!!!
container.padBottom(310);
} else {
container.padBottom(0);
}
}
};
textFld1.setOnscreenKeyboard(keyboard);
textFld2.setOnscreenKeyboard(keyboard);
,並提交按鈕的InputListener(上觸地)我有一個像清理功能:
textFld1.setText("");
textFld2.setText("");
stage.unfocus(textFld1);
stage.unfocus(textFld2);
keyboard.show(false);
這樣的容器臺會在軟鍵盤顯示時填充,按下提交按鈕後將恢復;軟鍵盤也被隱藏起來。
現在,有兩個問題的解決方法:
我還沒有找到一種方式來獲得軟鍵盤高度;正如你在示例代碼中看到的,我已經選擇了一個任意值作爲填充,所以在我的模擬器上看起來不錯。但桌子的上部填充仍然存在;我沒有找到如何確定軟鍵盤是可見或不可見
如果有人發現我的問題的另一個解決方案,請張貼。
謝謝。
我完全摔跤這個問題,但我想我找到了一個非常好的解決方案。
解決方案在理論上:
當鍵盤彈出,讓屏幕大小調整,從而調用libgdx的調整回調。
優點:
缺點
如何做到這一點:
創建main_layout.xml
文件,(....YourLibGdxThing\android\res\layout\main_layout.xml
),使得具有以下XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/main_frame_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
修改你的android啓動器類(....YourLibGdxThing\android\src\your\name\space\android\AndroidLauncher.java
),使onCreate看起來像這樣:
public class AndroidLauncher extends AndroidApplication
{
@Override
protected void onCreate (Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.main_frame_layout);
frameLayout.addView(initializeForView(new YourGame(),config));
}
}
變化android:windowFullScreen
屬性在style.xml
(....YourLibGdxThing\android\res\values\styles.xml
)爲假;該XML應該是這樣的style.xml
:
<resources>
<style name="GdxTheme" parent="android:Theme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowFullscreen">false</item> <!-- IMPORTANT -->
</style>
</resources>
屬性android:windowSoftInputMode="adjustResize"
添加到Android清單,到活動標籤...我AndroidManifest(....YourLibGdxThing\android\AndroidManifest.xml
)看起來是這樣的:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.project.reverse.domain.thing"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="22" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/GdxTheme" >
<activity
android:name="my.project.reverse.domain.thing.AndroidLauncher"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" <!-- IMPORTANT -->
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
謝謝!我希望它可以幫助!!!!!!!!!!
我從來沒有嘗試過,但嘗試從軟鍵高度設置'Gdx.gl.glViewport'到屏幕高度和正常寬度。我不確定,如果軟鍵使用相同的視口,但如果不是,這應該是你正在尋找的。 – Springrbua
嗨,我試圖找出你指的是什麼,但我失敗了:)請給我一個提示嗎? – JedyKnite
我希望這可以幫助你:http://www.acamara.es/blog/2012/02/keep-screen-aspect-ratio-with-different-resolutions-using-libgdx/。 「黑匣子」應該是你的Softkeyboard。 – Springrbua