Android:键盘与EditText重叠(带有printscreens)

时间:2011-11-03 19:34:12

标签: android

我有一个EditText(用户可以输入 numbers ), 所以当用户点击EditText文本框时,会打开一个带数字的键盘。

This is how it looks when the text box is clicked

你可以看到键盘隐藏了文本框的一小部分。

但是当我按下一个键,例如0时,它看起来没问题。 This is how it looks after after clicking 0

我能做什么(除了把EditText放得更高)所以看起来会像第二张图片那样吗?

修改: .xml代码:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:weightSum="1">
    <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content">
    <LinearLayout android:layout_width="wrap_content" android:orientation="vertical" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentRight="true">
        <android.widget.CheckedTextView android:id="@+id/checkedTextView1" android:layout_height="wrap_content" android:layout_width="fill_parent" android:textSize="17sp" android:text="@string/toString"></android.widget.CheckedTextView>
        <AutoCompleteTextView android:layout_height="wrap_content" android:id="@+id/autoCompleteTextView1" android:layout_width="fill_parent" android:text="@string/emptyString" android:textSize="17sp" android:gravity="top|left" android:minHeight="62dp">
            <requestFocus></requestFocus>
        </AutoCompleteTextView>
        <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout2">
            <Button android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_weight="0.33333333333" android:text="@string/contactsString" android:textSize="17sp" android:id="@+id/contactsButton"></Button>
            <Button android:layout_weight="0.33333333333" android:layout_height="wrap_content" android:text="@string/groupsString" android:layout_width="fill_parent" android:id="@+id/groupsButton" android:textSize="17sp"></Button>
            <Button android:layout_weight="0.33333333333" android:layout_height="wrap_content" android:text="@string/favouritesString" android:layout_width="fill_parent" android:id="@+id/button3" android:textSize="17sp"></Button>
        </LinearLayout>
        <TextView android:id="@+id/textView1" android:text="@string/messageString" android:layout_height="wrap_content" android:textSize="17sp" android:layout_width="fill_parent"></TextView>
        <EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:layout_width="fill_parent" android:gravity="top|left" android:minHeight="105dp"></EditText>
        <TextView android:id="@+id/textView2" android:text="@string/repetition" android:layout_height="wrap_content" android:layout_width="fill_parent" android:textSize="17sp"></TextView>
        <Spinner android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/spinner"></Spinner>
        <LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout3" android:layout_width="fill_parent">
            <ImageView android:src="@drawable/button_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView1" android:layout_weight="0.1"></ImageView>
            <EditText android:layout_height="wrap_content" android:id="@+id/timeET" android:inputType="number" android:layout_width="wrap_content" android:layout_weight="0.4"></EditText>
            <ImageView android:src="@drawable/button_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView2" android:layout_weight="0.1"></ImageView>
            <EditText android:layout_height="wrap_content" android:id="@+id/dateET" android:inputType="number" android:layout_width="wrap_content" android:layout_weight="0.4" android:layout_marginRight="3dp"></EditText>
        </LinearLayout>
        <RelativeLayout android:id="@+id/relativeLayout2" android:layout_width="fill_parent" android:layout_height="fill_parent">
            <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/linearLayout4" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_alignParentLeft="true">
                <Button android:layout_weight="0.5" android:layout_height="wrap_content" android:text="@string/button_ok" android:layout_width="fill_parent" android:id="@+id/button4" android:textSize="17sp"></Button>
                <Button android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/button5" android:layout_weight="0.5" android:text="@string/button_cancel" android:textSize="17sp"></Button>
            </LinearLayout>
        </RelativeLayout>
    </LinearLayout>
</RelativeLayout>

</LinearLayout>

8 个答案:

答案 0 :(得分:20)

我已经尝试过你的XML,是的,你说得对,问题就出现了。

要解决这个问题,我在MainActivity.java中编写了这一行,希望对您有所帮助,并将布局XML放在ScrollView中。

<强>活动

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.temp);
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

        final EditText time = (EditText)findViewById(R.id.timeET);
        time.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                time.requestLayout();
                MyActivity.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED);

                return false;
            }
        });
        final EditText date = (EditText)findViewById(R.id.dateET);
        date.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                time.requestLayout();
                MyActivity.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_UNSPECIFIED);

                return false;
            }
        });
         }

XML 就像,

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
  xmlns:android="http://schemas.android.com/apk/res/android" 
  android:orientation="vertical" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" > 

        <ScrollView android:id="@+id/scrollView1"
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent" 
        android:weightSum="1">
---
---
---
        </ScrollView> 
</LinearLayout> 

答案 1 :(得分:5)

以这种方式更改为ScrollView:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:weightSum="1" >
        <RelativeLayout
            android:id="@+id/relativeLayout1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
            <LinearLayout
                android:layout_width="wrap_content"
                android:orientation="vertical"
                android:layout_height="wrap_content"
                android:id="@+id/linearLayout1"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true" >
                <android.widget.CheckedTextView
                    android:id="@+id/checkedTextView1"
                    android:layout_height="wrap_content"
                    android:layout_width="fill_parent"
                    android:textSize="17sp"
                    android:text="@string/toString" />
                <AutoCompleteTextView
                    android:layout_height="wrap_content"
                    android:id="@+id/autoCompleteTextView1"
                    android:layout_width="fill_parent"
                    android:text="@string/emptyString"
                    android:textSize="17sp"
                    android:gravity="top|left"
                    android:minHeight="62dp" >
                    <requestFocus></requestFocus>
                </AutoCompleteTextView>
                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/linearLayout2" >
                    <Button
                        android:layout_height="wrap_content"
                        android:layout_width="fill_parent"
                        android:layout_weight="0.33333333333"
                        android:text="@string/contactsString"
                        android:textSize="17sp"
                        android:id="@+id/contactsButton" />
                    <Button
                        android:layout_weight="0.33333333333"
                        android:layout_height="wrap_content"
                        android:text="@string/groupsString"
                        android:layout_width="fill_parent"
                        android:id="@+id/groupsButton"
                        android:textSize="17sp" />
                    <Button
                        android:layout_weight="0.33333333333"
                        android:layout_height="wrap_content"
                        android:text="@string/favouritesString"
                        android:layout_width="fill_parent"
                        android:id="@+id/button3"
                        android:textSize="17sp" />
                </LinearLayout>
                <TextView
                    android:id="@+id/textView1"
                    android:text="@string/messageString"
                    android:layout_height="wrap_content"
                    android:textSize="17sp"
                    android:layout_width="fill_parent" />
                <EditText
                    android:layout_height="wrap_content"
                    android:id="@+id/editText1"
                    android:layout_width="fill_parent"
                    android:gravity="top|left"
                    android:minHeight="105dp" />
                <TextView
                    android:id="@+id/textView2"
                    android:text="@string/repetition"
                    android:layout_height="wrap_content"
                    android:layout_width="fill_parent"
                    android:textSize="17sp" />
                <Spinner
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/spinner" />
                <LinearLayout
                    android:layout_height="wrap_content"
                    android:id="@+id/linearLayout3"
                    android:layout_width="fill_parent" >
                    <ImageView
                        android:src="@drawable/button_time"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/imageView1"
                        android:layout_weight="0.1" />
                    <EditText
                        android:layout_height="wrap_content"
                        android:id="@+id/timeET"
                        android:inputType="number"
                        android:layout_width="wrap_content"
                        android:layout_weight="0.4" />
                    <ImageView
                        android:src="@drawable/button_date"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/imageView2"
                        android:layout_weight="0.1" />
                    <EditText
                        android:layout_height="wrap_content"
                        android:id="@+id/dateET"
                        android:inputType="number"
                        android:layout_width="wrap_content"
                        android:layout_weight="0.4"
                        android:layout_marginRight="3dp" />
                </LinearLayout>
                <RelativeLayout
                    android:id="@+id/relativeLayout2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" >
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/linearLayout4"
                        android:layout_alignParentBottom="true"
                        android:layout_alignParentRight="true"
                        android:layout_alignParentLeft="true" >
                        <Button
                            android:layout_weight="0.5"
                            android:layout_height="wrap_content"
                            android:text="@string/button_ok"
                            android:layout_width="fill_parent"
                            android:id="@+id/button4"
                            android:textSize="17sp" />
                        <Button
                            android:layout_height="wrap_content"
                            android:layout_width="fill_parent"
                            android:id="@+id/button5"
                            android:layout_weight="0.5"
                            android:text="@string/button_cancel"
                            android:textSize="17sp" />
                    </LinearLayout>
                </RelativeLayout>
            </LinearLayout>
        </RelativeLayout>
    </LinearLayout>
</ScrollView>

答案 2 :(得分:3)

将整个视图放在ScrollView中并设置android:windowSoftInputMode = adjustPan它就可以了。

你只需要添加这段代码,

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

Your linear layout here....

</ScrollView>

我已经在我的HTC Desire上测试了它,它的工作正常对我来说希望它也适合你。

答案 3 :(得分:2)

您可以通过AndroidManifest中声明的活动的android:windowSoftInputMode元素向系统提供一些提示。尝试“adjustResize”值。

android:windowSoftInputMode

答案 4 :(得分:2)

将活动上的android:windowSoftInputMode设置为"adjustPan"

  

活动的主窗口未调整大小以便为软键盘腾出空间。相反,窗口的内容会自动平移,以便键盘不会遮挡当前焦点,用户可以随时看到他们正在键入的内容。

在全屏活动中使用此技术时要小心one potential bug

答案 5 :(得分:1)

尝试更改线性布局以滚动视图...以便如果键盘位于上方,则editt文本用户可以滚动并键入...

 <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:weightSum="1">
<RelativeLayout android:id="@+id/relativeLayout1"
    android:layout_width="fill_parent" android:layout_height="wrap_content">
    <LinearLayout android:layout_width="wrap_content"
        android:orientation="vertical" android:layout_height="wrap_content"
        android:id="@+id/linearLayout1" android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true" android:layout_alignParentTop="true"
        android:layout_alignParentRight="true">
        <android.widget.CheckedTextView
            android:id="@+id/checkedTextView1" android:layout_height="wrap_content"
            android:layout_width="fill_parent" android:textSize="17sp"></android.widget.CheckedTextView>
        <AutoCompleteTextView android:layout_height="wrap_content"
            android:id="@+id/autoCompleteTextView1" android:layout_width="fill_parent"
            android:textSize="17sp" android:gravity="top|left"
            android:minHeight="62dp">
            <requestFocus></requestFocus>
        </AutoCompleteTextView>
        <LinearLayout android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:id="@+id/linearLayout2">
            <Button android:layout_height="wrap_content"
                android:layout_width="fill_parent" android:layout_weight="0.33333333333"
                android:textSize="17sp" android:id="@+id/contactsButton"></Button>
            <Button android:layout_weight="0.33333333333"
                android:layout_height="wrap_content" android:layout_width="fill_parent"
                android:id="@+id/groupsButton" android:textSize="17sp"></Button>
            <Button android:layout_weight="0.33333333333"
                android:layout_height="wrap_content" android:layout_width="fill_parent"
                android:id="@+id/button3" android:textSize="17sp"></Button>
        </LinearLayout>
        <TextView android:id="@+id/textView1" android:layout_height="wrap_content"
            android:textSize="17sp" android:layout_width="fill_parent"></TextView>
        <EditText android:layout_height="wrap_content" android:id="@+id/editText1"
            android:layout_width="fill_parent" android:gravity="top|left"
            android:minHeight="105dp"></EditText>
        <TextView android:id="@+id/textView2" android:layout_height="wrap_content"
            android:layout_width="fill_parent" android:textSize="17sp"></TextView>
        <Spinner android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:id="@+id/spinner"></Spinner>
        <LinearLayout android:layout_height="wrap_content"
            android:id="@+id/linearLayout3" android:layout_width="fill_parent">
            <ImageView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:id="@+id/imageView1"
                android:layout_weight="0.1"></ImageView>
            <EditText android:layout_height="wrap_content" android:id="@+id/timeET"
                android:inputType="number" android:layout_width="wrap_content"
                android:layout_weight="0.4"></EditText>
            <ImageView android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:id="@+id/imageView2"
                android:layout_weight="0.1"></ImageView>
            <EditText android:layout_height="wrap_content" android:id="@+id/dateET"
                android:inputType="number" android:layout_width="wrap_content"
                android:layout_weight="0.4" android:layout_marginRight="3dp"></EditText>
        </LinearLayout>
        <RelativeLayout android:id="@+id/relativeLayout2"
            android:layout_width="fill_parent" android:layout_height="fill_parent">
            <LinearLayout android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:id="@+id/linearLayout4"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_alignParentLeft="true">
                <Button android:layout_weight="0.5" android:layout_height="wrap_content"
                    android:layout_width="fill_parent" android:id="@+id/button4"
                    android:textSize="17sp"></Button>
                <Button android:layout_height="wrap_content"
                    android:layout_width="fill_parent" android:id="@+id/button5"
                    android:layout_weight="0.5" android:textSize="17sp"></Button>
            </LinearLayout>
        </RelativeLayout>
    </LinearLayout>
</RelativeLayout>

请进行必要的更改...我已经删除了字符串和可绘制的src以便我的耐心......我需要先改变 线性布局到scrollview ..没有这个 android:windowSoftInputMode = adjustPan

答案 6 :(得分:1)

这比接受的答案简单得多。关键是<item name="android:windowSoftInputMode">adjustUnspecified</item>行。将它添加到styles.xml:

<style name="AppTheme" parent="@android:Theme.Holo.Light.DarkActionBar">
    <item name="android:alertDialogTheme">@style/iconPopUpDialogTheme</item>
</style>

<style name="DialogAppTheme" parent="AppTheme">
    <item name="android:dialogTheme">@style/iconPopUpDialogTheme</item>
</style>

<style name="PopUpDialogTheme">
    <item name="android:windowSoftInputMode">adjustUnspecified</item>
</style>

答案 7 :(得分:-1)

在您的Manifest.xml文件中添加以下简单行:

android:windowSoftInputMode="adjustResize|stateHidden"