【问题标题】:Fixed position for edittext in android layout修复了android布局中edittext的位置
【发布时间】:2013-08-26 13:43:21
【问题描述】:

谁能解释一下,我如何将textviewedittextbutton 放在活动中心?

必须如此:

  1. Textview 在下方中间。
  2. EditTextbutton 附近(这两个元素在中间)。

我有我想要的,但是当我尝试填写 edittext 时,我有软键盘并且我的 Activity 标题跳到顶部并且用户看不到它。

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin"
                tools:context=".AddList">


    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:id="@+id/input"
            android:gravity="center|center_vertical"
            android:layout_alignParentTop="false"
            android:layout_centerVertical="true">

        <EditText
                android:id="@+id/editText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:singleLine="true">

            <requestFocus />
        </EditText>

        <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:text="Add" />
    </LinearLayout>

    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/linearLayout"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="false"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="false"
            android:layout_alignWithParentIfMissing="false"
            android:baselineAligned="false"
            android:gravity="center|center_vertical"
            android:paddingBottom="70dp"
            android:layout_centerInParent="true">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="SkleroShop List Name"
                android:id="@+id/textView2"
                android:focusable="false"
                />
    </LinearLayout>


</RelativeLayout>

/现在/

<?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:orientation="vertical"
              tools:context=".AddList" >

    <LinearLayout
            android:id="@+id/input1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center|center_vertical" >

        <TextView
                android:id="@+id/txt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:gravity="center"
                android:singleLine="true"
                android:text="Hello" >
        </TextView>
    </LinearLayout>

    <LinearLayout
            android:id="@+id/input"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:orientation="horizontal"
            android:gravity="center_vertical">

        <EditText
                android:id="@+id/editText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:singleLine="true" >

            <requestFocus />
        </EditText>

        <Button
                android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:text="Add" />
    </LinearLayout>

</LinearLayout>

正常屏幕http://i41.tinypic.com/13yjyut.png 带软键盘http://i43.tinypic.com/20j1nko.png

【问题讨论】:

  • 只需检查我编辑的答案..
  • 你应该使用相对布局作为父级:)

标签: java android android-layout


【解决方案1】:

如果您使用的是 LinearLayout,您可以指定重力属性以使子视图居中。

android:layout_gravity="center_horizontal"

如果您使用相对布局作为父布局,您可以使用属性来居中子视图。

android:layout_centerHorizontal="true"

请参阅此处获取帮助

Android soft keyboard resize layout

还有这个 Android 开发者参考

http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

将此属性添加到您的活动中

 android:windowSoftInputMode="stateVisible|adjustResize" 

并将布局更改为:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/RelativeLayout1"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="center_vertical"
     android:orientation="vertical"
     android:paddingBottom="@dimen/activity_vertical_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:gravity="center|center_vertical"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/button1"
    android:layout_alignBottom="@+id/button1"
    android:layout_toLeftOf="@+id/button1"
    android:ems="10" />

<Button
    android:id="@+id/button1"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignRight="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:onClick="sum"
    android:text="Sum" />

 </RelativeLayout>

【讨论】:

  • 一个问题...在活动中心上方(垂直)效果很好!但是当我将元素放在中心(垂直)并且软键盘可以覆盖 EditText...活动标题再次跳转到顶部...如何修复?
  • 只有当项目在顶部时才起作用......当项目在垂直中心或底部时......不起作用
猜你喜欢
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多