5

即使这个问题在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

4 回答 4

3

您没有说您正在为哪个版本的 android 编译以及您正在运行哪个版本。但是请检查您是否使用了由 about android:windowFullscreen 属性或通过设置 FLAG_FULSCREEN 设置的全屏选项。这会阻止 adjusrResize 选项在较新的 API 上正常工作。它适用于 API 10 (2.3.5)。

于 2014-07-02T09:35:54.157 回答
2

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

于 2014-03-15T14:55:27.210 回答
0

你应该使用

<activity
        android:name="com.task.SmsScreen"
        android:label="@string/app_name" 
        android:windowSoftInputMode="adjustPan"
      >        
    </activity>
于 2014-03-13T06:33:01.187 回答
0

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

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

在 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>

在滚动视图之后放置一个 Linearlayout 封闭标签。

Android真的真的很糟糕。

设备信息

Devcie:Xperia Z OS:JellyBean [不知道它在旧版本中的表现如何。]

于 2014-07-08T17:22:35.550 回答