我正在尝试使用ScrollView,以便在出现软键盘时向上滚动屏幕。 为此我开始使用一个非常简单的程序。在AndroidLauncher.java中,我创建了一个ScrollView和一个gameView。我将gameView添加到ScrollView并完成了“setContentView(scrollView)”
嗯......我没有错误,程序启动,并在屏幕上显示,但程序不显示gameView。我看到的只是ScrollView的背景颜色。
我在我的代码中放了2个System.out.println(“Test”),一个放在AndroidLauncher.java的末尾,另一个放在MyGdxGame.java中。只打印AndroidLauncher.java中的测试,这意味着不会创建gameView。有人有想法吗?
由于
以下是代码:
AndroidLauncher.java:
public class AndroidLauncher extends AndroidApplication {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
ScrollView scrollView = new ScrollView(this);
ScrollView.LayoutParams fParams = new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT,
ScrollView.LayoutParams.MATCH_PARENT);
scrollView.setLayoutParams(fParams);
scrollView.setBackgroundColor(0xffa3b8fe);
View gameView = initializeForView(new MyGdxGame(), config);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
params.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
gameView.setLayoutParams(params);
scrollView.addView(gameView);
setContentView(scrollView);
System.out.println("Test 1");
}
MyGdxGame.java:
public class MyGdxGame extends Game {
SpriteBatch batch;
AssetManager assets;
@Override
public void create () {
batch = new SpriteBatch();
assets = new AssetManager();
System.out.println("Test 2");
this.setScreen(new LoadingScreen(this));
}
@Override
public void render () {
super.render();
}
public void dispose () {
batch.dispose();
}
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.scroll.test.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/GdxTheme" >
<activity
android:name="com.scroll.test.android.AndroidLauncher"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"
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>
答案 0 :(得分:1)
最后,我找到了解决问题的(非常简单)方法: 创建我的ScrollView后,在AndroidLauncher.java中,我只需添加此方法:
scrollView.setFillViewport(true);
这很有效!我的Android应用程序显示gameView。 但现在我面临另一个问题。我想放置这个ScrollView,因为当软键盘出现在文本字段上时,我希望屏幕向上移动。 虽然我将此行放在AndroidManifest.xml中
android:windowSoftInputMode="adjustPan"
不起作用。屏幕不移动,软键盘隐藏了我正在使用的textField。
嗯......那是另一回事,如果我找不到解决方案,那将是另一个问题。