<ScrollView>
レイアウトがあります:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/my_scrollview"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
>
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical" >
<EditText
Android:id="@+id/input_one"
Android:layout_width="300dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:inputType="number" >
<EditText
Android:id="@+id/input_two"
Android:layout_width="300dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:inputType="number" >
<EditText
Android:id="@+id/input_three"
Android:layout_width="300dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:inputType="number" >
<Button
Android:id="@+id/ok_btn"
Android:layout_width="200dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_marginTop="20dp"
Android:text="@string/ok_str" />
</LinearLayout>
</ScrollView>
上記のように、単純なレイアウトは3つの入力フィールドと「OK」ボタンで構成されています。
上記のレイアウトでアプリを実行します。最初の入力フィールド(@+id/input_one
)をタップすると、画面の下部からソフトキーボードがポップアップします非表示 3番目の入力フィールドと「OK」ボタン。
<ScrollView>
を使用しているので、ソフトキーボードでhiddenである3番目の入力フィールドと[OK]ボタンを表示するためにページを上にスクロールできると思いましたbutページはスクロールできません。どうして?それを取り除く方法は? 基本的に、すべての入力フィールドと、[OK]ボタンがソフトキーボードがポップアップした場合でも表示したいと思います。
AndroidManifest.xmlの<activity>
で次の属性を定義することで問題を修正しました
Android:windowSoftInputMode="stateVisible|adjustResize"
わかりました、私は問題を見つけるために今数時間検索しました、そして私はそれを見つけました。
fillViewport="true"
やAndroid:windowSoftInputMode="adjustResize"
などの変更は私を助けませんでした。
Android 4.4を使用していますが、これはの大きな間違いです:
Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen"
どういうわけか、フルスクリーンテーマは、SoftKeyboardが表示されているときにScrollViewsがスクロールしないようにします。
現時点では、代わりにこれを使用することになりました:
Android:theme="@Android:style/Theme.Black.NoTitleBar
時間とバッテリー表示でトップシステムバーを取り除く方法がわかりませんが、少なくとも問題はありました。
これが同じ問題を抱えている他の人に役立つことを願っています。
EDIT:私の場合は少しの回避策がありましたので、投稿しました here :
これがあなたのために働くかどうかはわかりませんが、それは間違いなくあなたを理解し、いくつかのことを明確にするのに役立ちます。
EDIT2:ここ は、正しい方向に進み、問題を解決するのに役立つ別の優れたトピックです。
私にとって有効なのは、この属性のマニフェストのアクティビティに入れることだけです。
Android:windowSoftInputMode="stateHidden|adjustPan"
アクティビティを開くときにキーボードを表示せず、ビューの下部に重ならないようにします。
これをマニフェスト内にフルスクリーンモードなしで配置します
Android:windowSoftInputMode="stateVisible|adjustPan"
あなたのマニフェストで
<activity
Android:windowSoftInputMode="stateVisible|adjustPan"
Android:name="com.example.patronusgps.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Manifest
で定義windowSoftInputMode
プロパティ<activity Android:name=".MyActivity" Android:windowSoftInputMode="adjustNothing">
アクティビティタグの下のAndroidマニフェストファイルに以下のコード行を追加します
Android:windowSoftInputMode="adjustResize"
これをチェックしてください。
<activity Android:name=".Calculator" Android:windowSoftInputMode="stateHidden|adjustResize" Android:theme="@Android:style/Theme.Black.NoTitleBar"></activity>
これは私のためだけに働いた:
Android:windowSoftInputMode="adjustPan"
次のコードを使用して問題を解決できます。
<activity
Android:name=".DonateNow"
Android:label="@string/title_activity_donate_now"
Android:screenOrientation="portrait"
Android:theme="@style/AppTheme"
Android:windowSoftInputMode="stateVisible|adjustPan">
</activity>
また、プログラムでそれを行う場合は、アクティビティのonCreateに次の行を追加するだけです。
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE |
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE );