2015-01-20 4 views
0

소프트 키보드가 나타나면 화면을 위로 스크롤 할 수 있도록 ScrollView를 실험하고 있습니다. 아주 간단한 프로그램으로 시작했습니다. AndroidLauncher.java에서 ScrollView와 gameView를 만들었습니다. gameView를 ScrollView에 추가하고 "setContentView (scrollView)"로 끝냈습니다.libGdx gameView가 ScrollView에 표시되지 않습니다.

음 ... 오류가없고 프로그램이 시작되고 화면에 표시되지만 프로그램에 gameView가 표시되지 않습니다. 내가 보는 모든 것은 ScrollView의 배경색입니다.

필자는 코드에 System.out.println ("Test")을 2 개, 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> 

답변

1

마지막으로, 나는 내 문제에 대한 (아주 쉬운) 솔루션을 발견하십시오 AndroidLauncher.java에, 내있는 ScrollView를 생성 한 후 를, 나는 단지이 방법을 추가했다 :

scrollView.setFillViewport(true); 

을 그리고 그 작품! 내 안드로이드 애플 리케이션은 gameView를 표시합니다. 하지만 지금 또 다른 문제에 직면 해 있습니다. 소프트 키보드가 au 텍스트 필드 위에 나타날 때 화면을 위로 움직이기 원했기 때문에이 ScrollView를 넣고 싶었습니다. 나는 작동하지 않습니다 AndroidManifest.xml을

android:windowSoftInputMode="adjustPan" 

에서이 줄을 넣어 있지만. 화면이 움직이지 않고 소프트 키보드가 사용중인 textField를 숨 깁니다.

음 ... 그건 또 다른 문제입니다. 해결책을 찾지 못하면 또 다른 질문이 될 것입니다.

관련 문제