5

この問題はstackoverflowに多くの解決策がありますが、私の問題を解決できませんでした. 画面には 2 つの編集テキストがあり、1 つは画面の上部に、もう 1 つは画面の下部に添付されています。一番下の編集テキストをクリックすると、その上にソフトキーボードが表示されます。私はすでに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のバージョンと、実行しているバージョンについては言いませんでした。ただし、約 android:windowFullscreen 属性または FLAG_FULSCREEN の設定によって設定されたフルスクリーン オプションを使用する可能性があるかどうかを確認してください。これにより、adjsrResize オプションが新しい API で正しく機能しなくなります。API 10 (2.3.5) で動作します。

于 2014-07-02T09:35:54.157 に答える
2

外側の Linear Layout を削除し、すべてを Relative Layout 内に配置します。そして、alignParentBottom を true にして、下部の編集テキストをレイアウトの下部に揃えます。そして主なことは「android:windowSoftInputModeには何もしないこと」です。その行をマニフェスト ファイルから削除します。アンドロイドにデフォルトを取らせます。

于 2014-03-15T14:55:27.210 に答える
0

2日間の手間とすべてのstackoverflowソリューションを読んだ後、私は自分自身を思いつきました。それは私のために働いた。スクロールビューを使用する必要があったのは、ビューを縮小することで小さなスペースで調整するだけでした。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>

スクロールビューの後に Linearlayout 囲みタグを配置します。

Android 本当に本当にひどい。

デバイス情報

機種: Xperia Z OS: JellyBean [旧バージョンでの挙動は不明]

于 2014-07-08T17:22:35.550 に答える