机器人:windowSoftInputMode =" adjustResize"没有按预期工作

时间:2014-03-13 06:25:52

标签: android xml android-layout relativelayout window-soft-input-mode

即使这个问题在stackoverflow中有很多解决方案,但我无法解决我的问题。 我在屏幕上有两个编辑文本,一个在顶部,另一个在屏幕底部。 每当我点击底部编辑文本时,软键板就会出现。我已经玩过windowSoftInputMode。

当我点击我的底层编辑文本时,我不希望屏幕的其他内容向上滚动。

这是我的xml布局。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@color/background"
android:orientation="vertical"
>
<RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content" >
<EditText
   android:id="@+id/phone_number_edit_text_compose"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentLeft="true"
   android:layout_alignParentTop="true"
   android:layout_marginLeft="@dimen/activity_horizontal_margin"
   android:layout_marginTop="@dimen/activity_horizontal_margin"
   android:layout_toLeftOf="@id/select_contact"
   android:background="@drawable/phone_edittext_background_selector"
   android:ems="10"
   android:hint="@string/phone_edittext_hint"
   android:inputType="phone"
   android:paddingBottom="12dp"
   android:paddingLeft="8dp"
   android:paddingTop="12dp"
   android:textAppearance="?android:attr/textAppearanceMedium"
   android:textColor="@color/white" />

<ImageButton
 android:id="@+id/selectcontact_compose"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentTop="true"
 android:layout_alignBottom="@+id/phone_number_edit_text_compose"
 android:layout_marginTop="@dimen/activity_horizontal_margin"
 android:layout_toRightOf="@id/phone_number_edit_text_compose"
 android:background="@drawable/select_contact_background_selector"
 android:contentDescription="@string/select_contact_content_description"
 android:src="@drawable/select_contact_selector"
 android:layout_marginLeft="2dp" 
 android:paddingLeft="8dp"
 android:paddingRight="8dp"/>

<View
     android:id="@+id/view1"
     android:layout_width="wrap_content"
     android:layout_height="2px"
     android:layout_below="@id/phone_number_edit_text_compose"
     android:layout_marginTop="@dimen/redial_screen_distance_between_views"
     android:background="@drawable/separator" />

<LinearLayout
   android:id="@+id/repetition_layout"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_below="@+id/view1"
   android:clickable="true"
   android:onClick="RepetitionLayoutClickListener"
   android:orientation="horizontal"
   android:paddingBottom="@dimen/redial_screen_distance_between_views"
   android:paddingTop="@dimen/redial_screen_distance_between_views" 
   android:background="@drawable/repetition_layout_background_selector"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin">

<TextView
  android:id="@+id/repetition_textview"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/repetition"
  android:textColor="@color/green"
  android:textAppearance="?android:attr/textAppearanceLarge" />

<Spinner
  android:id="@+id/repetition_spinner"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@null"
  android:clickable="false"
  android:popupBackground="@color/dark_background" />

</LinearLayout>

<View
     android:id="@+id/view2"
     android:layout_width="wrap_content"
     android:layout_height="2px"
     android:layout_below="@id/repetition_layout"
     android:background="@drawable/separator" />

<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_below="@+id/view2"
   android:orientation="horizontal"
   android:paddingBottom="@dimen/redial_screen_distance_between_views"
   android:paddingTop="@dimen/redial_screen_distance_between_views" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:id="@+id/date_layout">

<TextView
   android:id="@+id/textView1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/d"
   android:textColor="@color/green"
   android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
   android:id="@+id/date_textview"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/a"
   android:paddingLeft="5dp"
   android:textColor="@color/white"
   android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
<View
     android:id="@+id/view3"
     android:layout_width="wrap_content"
     android:layout_height="2px"
     android:layout_below="@id/date_layout"
     android:background="@drawable/separator" />

<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_below="@+id/view3"
   android:orientation="horizontal"
   android:paddingBottom="@dimen/redial_screen_distance_between_views"
   android:paddingTop="@dimen/redial_screen_distance_between_views" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:id="@+id/time_layout">

<TextView
   android:id="@+id/textView2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/t"
   android:textColor="@color/green"
   android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
   android:id="@+id/time_textview"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="@string/b"
   android:paddingLeft="5dp"
   android:textColor="@color/white"
   android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
</RelativeLayout>

<RelativeLayout
   android:id="@+id/compose_layout"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_weight="1">

<EditText
   android:id="@+id/editText1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/compose_message_background"
   android:hint="@string/compose_message_hint"
   android:paddingLeft="5dp"
   android:paddingRight="5dp"
   android:paddingTop="12dp"
   android:paddingBottom="12dp"
   android:layout_alignParentLeft="true"
   android:layout_alignParentBottom="true"
   android:textAppearance="?android:attr/textAppearanceMedium"
   android:layout_toLeftOf="@+id/imageButton1" >

</EditText>

<ImageButton
   android:id="@+id/imageButton1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="@drawable/send_button_background"
   android:src="@drawable/ic_action_send_now" 
   android:paddingRight="8dp"
   android:paddingLeft="8dp"
   android:layout_alignBottom="@+id/editText1"
   android:layout_alignTop="@+id/editText1"
   android:layout_alignParentRight="true"/>
</RelativeLayout>

</LinearLayout>

这是我的清单xml。

    <activity
        android:name="com.task.SmsScreen"
        android:label="@string/app_name" 
        android:windowSoftInputMode="adjustResize"
      >        
    </activity>

4 个答案:

答案 0 :(得分:2)

你没有说你正在编译哪个版本的android以及你正在运行哪个版本。 但请检查是否可以使用关于android:windowFullscreen属性设置的全屏选项或设置FLAG_FULSCREEN。这可以防止adjusrResize选项在较新的API上正确地运行。它适用于API 10(2.3.5)。

答案 1 :(得分:1)

删除外部线性布局并将所有内容放在相对布局中。通过使alignParentBottom为true,将底部编辑文本与布局底部对齐。 主要的事情是“不要对android:windowSoftInputMode做任何事情。”从清单文件中删除该行。 让android默认。

答案 2 :(得分:0)

你应该使用

<activity
        android:name="com.task.SmsScreen"
        android:label="@string/app_name" 
        android:windowSoftInputMode="adjustPan"
      >        
    </activity>

答案 3 :(得分:0)

经过两天的麻烦和阅读所有的stackoverflow解决方案后,我想出了自己的解决方案。它对我有用。 我不得不使用scrollview,然后它通过缩小视图在微小的空间中调整自己。没有scrollview,我不得不使用带有layout_gravity:bottom的Outermost LinearLayout。但是使用此设置,所有元素都会在屏幕底部掉落。如果使用了layout_margintop或layout_marginbottom,那么当键盘弹出一些textview或edittextview时会抛出屏幕.. Grrrrrrrrrrr ....

所以,最后我发现这个解决方案希望它可以解决你的一些问题。

在Manifest.xml中

<activity android:windowSoftInputMode="adjustResize" android:screenOrientation="portrait" android:configChanges="orientation">

在布局中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/love_bg_red_10"
android:gravity="center"
android:orientation="vertical"
tools:context="${packageName}.${activityClass}" >

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/txtvwYourName"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:background="@layout/border_header"
            android:gravity="center"
            android:text="Your Name"
            android:textColor="#FFF"
            android:textSize="20sp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/edttxtFistName"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:background="@layout/border_edittextview"
            android:gravity="center"
            android:hint="Type your name here"
            android:includeFontPadding="false"
            android:inputType="textPersonName"
            android:lines="1"
            android:maxLength="30"
            android:tag="edttxtFistName"
            android:textAllCaps="false"
            android:textColor="#FFF"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/txtvwFavPersonName"
            android:layout_width="fill_parent"
            android:layout_height="35dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:background="@layout/border_header"
            android:gravity="center"
            android:text="Name of your favorite person"
            android:textColor="#FFF"
            android:textSize="20sp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/edttxtLastName"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:layout_marginBottom="35dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:background="@layout/border_edittextview"
            android:gravity="center"
            android:hint="Type your favorite person&apos;s name"
            android:inputType="textPersonName"
            android:lines="1"
            android:maxLength="30"
            android:tag="edttxtLastName"
            android:textColor="#fff"
            android:textSize="20sp" />

        <Button
            android:id="@+id/btnCalculate"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@layout/button_background"
            android:text="Calculate"
            android:textSize="20sp"
            android:textStyle="bold" >
        </Button>
    </LinearLayout>
</ScrollView>

在scrollview之后放置一个Linearlayout封闭标记。

Android真的太可怕了。

设备信息

Devcie:Xperia Z. 操作系统:JellyBean [不知道它在旧版本中的表现如何。]