android - 基于键盘调整EditText高度

时间:2013-12-05 10:13:13

标签: android android-layout android-activity android-edittext

我在android中有一个活动,其中有一个编辑框和编辑框下面的3个按钮。请查看附件。启动此活动时,默认状态为STATE1。(请参阅图像)。键盘默认可见。现在,当我按下后退按钮或处理键盘时,我希望调整文本大小并占据整个屏幕,如STATE2所示。

我不知道如何做到这一点。我将edittext的高度硬编码为基于目标设备的某些dp。我相信这必须改变。任何人都可以帮助我如何实现这一目标。

布局文件的XML和screencap

一样
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF" >

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

    <EditText
        android:id="@+id/EditMessage"
        android:layout_width="fill_parent"
        android:layout_height="150dp"            
        android:background="@drawable/newback"
        android:gravity="top"
        android:imeOptions="actionDone"
        android:inputType="textMultiLine|textFilter|textVisiblePassword|textNoSuggestions"
        android:maxLength="200"
        android:padding="5dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000"
       />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"           
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/PostMessage"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:layout_weight="1"
            android:layout_marginRight="0.2dp"
            android:background="@drawable/newbutton_corner"
            android:text="@string/SubmitMessage"
            android:textColor="#FFFFFF"
            android:textStyle="bold" />

        <Button
            android:id="@+id/CancelMessage"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:layout_weight="1"
            android:layout_marginRight="0.2dp"
            android:background="@drawable/newbutton_corner"
            android:text="@string/CancelMessage"
            android:textColor="#FFFFFF"
            android:textStyle="bold" />

        <Button
            android:id="@+id/DeleteMessage"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:layout_weight="1"
            android:background="@drawable/newbutton_corner"
            android:text="@string/DeleteMessage"
            android:textColor="#FFFFFF"
            android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>  

enter image description here

4 个答案:

答案 0 :(得分:6)

在你的清单中尝试这个..

<activity
      android:name="Activity"
      android:windowSoftInputMode="adjustPan"/>

并且您的edittext使用<requestFocus />从该开始本身开始关注

android:layout_weight="1"它会自动填满屏幕。

 <EditText
        android:id="@+id/EditMessage"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"            
        android:background="#696969"
        android:gravity="top"
        android:imeOptions="actionDone"
        android:inputType="textMultiLine|textFilter|textVisiblePassword|textNoSuggestions"
        android:maxLength="200"
        android:padding="5dp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#000000"
       >

        <requestFocus />

    </EditText>

答案 1 :(得分:6)

按如下方式更改EditText

<EditText
    android:id="@+id/EditMessage"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:gravity="top"
    android:imeOptions="actionDone"
    android:inputType="textMultiLine|textFilter|textVisiblePassword|textNoSuggestions"
    android:maxLength="200"
    android:padding="5dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="#000000"
    />

添加layout_weight = 1

在我看来,需要adjustPan。我会留给你决定。行为会有所不同,你可以尝试一下。以下是文档中关于adjustPan的说明:

  

活动的主窗口未调整大小以便为软件腾出空间   键盘。相反,窗口的内容会自动平移   这样当前的焦点永远不会被键盘和用户遮挡   总能看到他们正在打字的东西。这通常不太理想   比调整大小,因为用户可能需要关闭软键盘   进入并与窗户的模糊部分互动。

如果使用此按钮,底部的按钮可能会隐藏。 而是使用adjustResize: 将此行放在AndroidManifest

中的活动中
android:windowSoftInputMode="stateVisible|adjustResize"

答案 2 :(得分:0)

是的,你可以做到这一点,简单。

  1. android:windowSoftInputMode="adjustResize" ,,在必要的活动
  2. 下将此属性添加到最明显的位置
  3. 将文本视图的宽度和高度设置为match_parent
  4. 完成。

答案 3 :(得分:0)

添加android:windowSoftInputMode="adjustPan"并将android:layout_height="150dp"更改为android:layout_height="fill_parent"