问题
I have a <ScrollView>
layout:
<?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>
As you see above, the simple layout consists of three input fields and an \"Ok\" button.
I run my app with the above layout, when I tap on the 1st input field (@+id/input_one
), the soft keyboard will pop up from the bottom of the screen, it hides the 3rd input field and the \"Ok\" button.
Since I use <ScrollView>
, I thought I can scroll the page up in order to see the 3rd input field and \"Ok\" button which are hidden by the soft keyboard, but the page is not scrollable. Why? How to get rid of it? basically, i would like to see every input fields and \"Ok\" button even the soft keyboard popped up.
回答1:
I fixed the problem by defining the following attribute in <activity>
of AndroidManifest.xml
android:windowSoftInputMode="stateVisible|adjustResize"
回答2:
Ok, I have searched several hours now to find the problem, and I found it.
None of the changes like fillViewport="true"
or android:windowSoftInputMode="adjustResize"
helped me.
I use Android 4.4 and this is the big mistake:
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
Somehow, the Fullscreen themes prevent the ScrollViews from scrolling when the SoftKeyboard is visible.
At the moment, I ended up using this instead:
android:theme="@android:style/Theme.Black.NoTitleBar
I don't know how to get rid of the top system bar with time and battery display, but at least I got the problem.
Hope this helps others who have the same problem.
EDIT: I got a little workaround for my case, so I posted it here:
I am not sure if this will work for you, but it will definitely help you in understanding, and clear some things up.
EDIT2: Here is another good topic that will help you to go in the right direction or even solve your problem.
回答3:
For me the only thing that works is put in the activity in the manifest this atribute:
android:windowSoftInputMode="stateHidden|adjustPan"
To not show the keyboard when opening the activity and don't overlap the bottom of the view.
回答4:
put this inside your Manifest like this in No fullscreen Mode
android:windowSoftInputMode="stateVisible|adjustPan"
in your manifest
<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>
回答5:
in your Manifest
define windowSoftInputMode
property
<activity android:name=".MyActivity" android:windowSoftInputMode="adjustNothing">
回答6:
Add below line of code in Android Manifest file under activity tag
android:windowSoftInputMode="adjustResize"
回答7:
check out this.
<activity android:name=".Calculator" android:windowSoftInputMode="stateHidden|adjustResize" android:theme="@android:style/Theme.Black.NoTitleBar"></activity>
回答8:
This only worked for me:
android:windowSoftInputMode="adjustPan"
回答9:
You can try using the following code to solve your problem:
<activity
android:name=".DonateNow"
android:label="@string/title_activity_donate_now"
android:screenOrientation="portrait"
android:theme="@style/AppTheme"
android:windowSoftInputMode="stateVisible|adjustPan">
</activity>
回答10:
Also if you want to do that programmatically just add the below line to the onCreate of the activity.
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE |
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE );
回答11:
well the simplest answer i tried is just remove your code which makes the activity go full screen .I had a code like this which was responsible for making my activity go fullscreen :
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
i just removed my code and it works completely fine although if you want to achieve this with your fullscreen on then you'll have to try some other methods
来源:https://stackoverflow.com/questions/9989130/page-scroll-when-soft-keyboard-popped-up