在安卓中如何让TextView和EditText在同一行显示?

4
我正在以下方式编写XML,list_item2 包含 TextView 和 EditText,而 list_item 是另一个仅包含 TextView 的 XML。
<?xml version="1.0" encoding="utf-8"?>

<TextView android:id="@+id/textItem"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

    <EditText
    android:id="@+id/editText1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
</EditText>

我正在使用ListView中的XML,例如

public View getView(int position, View convertView, ViewGroup parent) {
        View row;

        if(position!=2) {
                LayoutInflater inflater = getLayoutInflater();
                row = inflater.inflate(R.layout.list_item, parent, false);
        }
        else {
            LayoutInflater inflater = getLayoutInflater();
            row = inflater.inflate(R.layout.list_item2, parent, false);
        }
        TextView tv = (TextView) row.findViewById(R.id.textItem);
        tv.setText(getItem(position));

        tv.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });

但它创建的输出看起来像:
 TextView

 EditText

我希望两个元素在同一行显示,例如:
   TextView        EditText

有人能够编辑XML并告诉我在Android应用程序中创建GUI的层次结构吗?

5个回答

11

将你的EditTextTextView 放在一个水平方向的LinearLayout中(该方向是默认应用的),并设置layout_weight = 1 或者任何你想要的值,来分配EditTextTextView的权重。

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
<TextView android:id="@+id/textItem"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:padding="10dp"
    android:textSize="16sp" />
    <EditText
    android:id="@+id/editText1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"/ >
</LinearLayout>

@Aadil Soomro,我在表单聊天室里搜索了你 :-P - Chatar Veer Suthar
大多数情况下,我会在Casual Chat中在线。 - Adil Soomro
我已经点赞了,回答在5分钟后可以被接受,所以我也会接受它。 - Chatar Veer Suthar
@AdilSoomro 如果我想在应用程序注册界面中处理多行数据怎么办? - Sunishtha Singh
@SunishthaSingh 新建一个LinearLayout, 将其方向设置为垂直。在里面添加多个上述的LinearLayout - Adil Soomro

2
使用以下布局:
<?xml version="1.0" encoding="utf-8"?
    <LinearLayout
            android:id="@+id/lnrTitle"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

    <TextView android:id="@+id/textItem"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:weight="1"
        android:textSize="16sp" >
    </TextView>

        <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
    android:weight="1"

        android:layout_height="wrap_content" >

    </EditText>
    </LinearLayout>

@bindal-android:orientation="vertical"? 的意思是垂直方向。 - Vivek Kalkur
@bindal-不用担心:) 为你的努力点赞:) - Vivek Kalkur

1

在你的xml中添加一个父级布局,例如LinearLayout:

<LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="horizontal" > 
<TextView android:id="@+id/textItem"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:textSize="16sp" >
</TextView>
<EditText
android:id="@+id/editText1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</EditText>
</LinearLayout>

1
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:orientation="horizontal"
         android:gravity="center"
         android:padding="10dp">

     <TextView android:id="@+id/textItem"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:padding="10dp"
         android:textSize="16sp" >
     </TextView>

     <EditText
         android:id="@+id/editText1"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content" >
     </EditText>
 </LinearLayout>

0
今天许多应用程序采用了简单快捷的解决方案,只需将这些标签添加到您的TextView即可。
android:ellipsize="end"
android:maxLines="1"

现在你的TextView只有一行,末尾有三个点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接