EditText字段太大或被覆盖

时间:2013-09-24 11:07:15

标签: android android-layout

如何格式化标题,列表和EditText,以便EditText是固定的单行并始终可见? 这是我的布局,只有一个列表条目 - EditText填充屏幕的其余部分看起来很糟糕。 enter image description here

以下是包含多个列表条目的布局 - 软键盘隐藏了正在键入的文本。我在韦恩打字。 enter image description here

我尝试了各种线性和相对布局。这是我目前的布局:

<?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="wrap_content"
android:orientation="vertical" >

<TextView
    android:id="@+id/select_child_header"
    style="@style/headerStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="@color/start_blue"
    android:text="Which child did you take a picture of?" />

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/modchild_fragment"
    android:name="com.chex.control.ChildList"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/select_child_header"
    android:focusable="true"
    android:focusableInTouchMode="true" >
</fragment>

<EditText
    android:id="@+id/new_child"
    style="@style/editTextStyle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
       android:layout_below="@id/modchild_fragment" 
    android:hint="new child name"
    android:inputType="text"
    android:singleLine="true" />

</RelativeLayout>

我很欣赏有关如何格式化此屏幕的任何建议。

6 个答案:

答案 0 :(得分:3)

为此您有两个选项,一个是在textview中有一个名为android:singleLine="true"的标签,如果您这样做,文本会出现在一行中并且它会丢失一些文本并显示一些点......

另一种方法是你必须使用这个标签减少fontsize .. android:textSize="3sp"

答案 1 :(得分:0)

添加

 android:maxLines="1"

到您的EditText,以获得所需的行数。

答案 2 :(得分:0)

试试这种方式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/select_child_header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="Which child did you take a picture of?" />

    <fragment
        android:id="@+id/modchild_fragment"
        android:name="com.chex.control.ChildList"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:focusable="true"
        android:focusableInTouchMode="true" >
    </fragment>

    <EditText
        android:id="@+id/new_child"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@id/modchild_fragment"
        android:hint="new child name"
        android:inputType="text"
        android:singleLine="true" />

</LinearLayout>

答案 3 :(得分:0)

android:ellipsize=end  
android:singleLine="true"

答案 4 :(得分:0)

更改元素的顺序和位置:

  1. 首先添加标题
  2. 添加底部的edittext
  3. 在中间添加片段
  4. 类似的东西:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/select_child_header"
            style="@style/headerStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:background="@color/start_blue"
            android:text="Which child did you take a picture of?" />
    
        <EditText
            android:id="@+id/new_child"
            style="@style/editTextStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:hint="new child name"
            android:inputType="text"
            android:singleLine="true" />
    
        <fragment
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/modchild_fragment"
            android:name="com.chex.control.ChildList"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/new_child"
            android:layout_below="@id/select_child_header"
            android:focusable="true"
            android:focusableInTouchMode="true" >
        </fragment>
    
    </RelativeLayout>
    

答案 5 :(得分:0)

您可以将静态高度设置为Fragment。因此,如果您的列表项例如说一个或多于一个,则您的编辑文本构成片段的底层。 此外,您可以将android:singleLine =“true”属性设置为edittext。