2

所以画面会给你一个更好的理解这一问题:ListView中含有的TextView和ListView含有的EditText不在同一行

enter image description here

看到的,我加3 TextView向左ListView和3 EditText右边ListView但它们不在同一行。 那我该如何解决呢?

我的相关问题XML:

<LinearLayout 
      android:id="@+id/inner_linear_layout_id" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_below="@id/date_picker_id" 
      android:baselineAligned="false" 
      android:orientation="horizontal" 
      android:weightSum="1" > 

     <ListView 
      android:id="@+id/dates_list_view_id" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      /> 

     <ListView 
      android:id="@+id/comments_list_view_id" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      /> 
    </LinearLayout> 

我与此问题相关的Java:

arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,datesListView.getId()); 
datesListView.setAdapter(arrayAdapter); 
commentsListView.setAdapter(arrayAdapter); 


date.setTextSize(20); 
datesListView.addFooterView(date); 
commentText.setId(998); 
commentText.setInputType(EditorInfo.TYPE_CLASS_TEXT);  
commentText.setHint("Add a comment"); 
commentText.setTextSize(15); 

commentsListView.addFooterView(commentText); 

dateTextViewcommentTextEditText

+2

datetime和comment是一个元组。所以你应该有一个ListView,而每个ListItem是一个由datetime和EditText组成的视图。在ListItem中使用RelativeLayout和toLeftOf等进行正确对齐。 – Matthias

+0

@Matthias视图如何包含TextView和EditText视图? – God

+1

检查我的回答 - 发贴 – Matthias

回答

1

好的,这里有一个解决方案。当然还有许多其他可能的解决方案。

下面是列表项的XML。它描述了列表中单个条目的视图。在这里它是用TextView和EditText构建的:

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

    <TextView 
      android:id="@+id/text_datetime" 
      android:text="8:20p.m." 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 

    <EditText 
      android:id="@+id/edit_comment" 
      android:text="no comment" 
      android:layout_weight="1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 

</LinearLayout> 

这是实际包含ListView本身的主要活动的XML。不过,这并不表示孩子(列表项)如何将看起来像,因为这是由上面的XML定义:

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

而这对于包括绑定到ListView一些演示数据在MainActivity的代码。

package com.example.myapp; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 

import java.text.SimpleDateFormat; 
import java.util.*; 

public class MyActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ListView list = (ListView)findViewById(R.id.my_list); 
     if (list != null) { 
      final List<DemoItem> demoList = new ArrayList<DemoItem>(); 

      final SimpleDateFormat hourDateFormat = new SimpleDateFormat("HH:mm", Locale.getDefault()); 
      final Calendar c = Calendar.getInstance(); 
      final Date now = c.getTime(); 
      final String now_ = hourDateFormat.format(now); 

      demoList.add(0, new DemoItem(now_, "first comment")); 
      demoList.add(1, new DemoItem(now_, "second comment")); 
      demoList.add(2, new DemoItem(now_, "third comment")); 

      DemoAdapter adapter = new DemoAdapter(this, demoList); 
      list.setAdapter(adapter); 
     } 
    } 

    class DemoItem { 
     public String datetime; 
     public String comment; 

     public DemoItem(String datetime, String comment) { 
      this.datetime = datetime; 
      this.comment = comment; 
     } 
    } 

    class DemoAdapter extends ArrayAdapter<DemoItem> { 

     public DemoAdapter(Context context, List<DemoItem> items) { 
      super(context, R.layout.list_item, items); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      if (convertView == null) 
       convertView = getLayoutInflater().inflate(R.layout.list_item, null); 

      DemoItem item = super.getItem(position); 

      EditText editComment = (EditText)convertView.findViewById(R.id.edit_comment); 
      if (editComment != null) 
       editComment.setText(item.comment); 

      TextView txtDatetime = (TextView)convertView.findViewById(R.id.text_datetime); 
      if (txtDatetime != null) 
       txtDatetime.setText(item.datetime); 

      return convertView; 
     } 
    } 
} 

这就是它看起来像在最后:这实际上ListView控件与它的项目,并为ListView项目相应的XML连接

looks like that

如果你不会用ListView,那么这里是一个相同的RelativeLayout。但它不是动态的,也没有绑定到任何适配器:

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

    <TextView 
      android:id="@+id/text_datetime1" 
      android:text="8:20p.m." 
      android:layout_toLeftOf="@+id/edit_comment1" 
      android:layout_alignBaseline="@+id/edit_comment1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 

    <EditText 
      android:id="@+id/edit_comment1" 
      android:text="no comment" 
      android:layout_alignParentRight="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 

    <TextView 
      android:id="@+id/text_datetime2" 
      android:text="8:20p.m." 
      android:layout_toLeftOf="@+id/edit_comment2" 
      android:layout_alignBaseline="@+id/edit_comment2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 

    <EditText 
      android:id="@+id/edit_comment2" 
      android:text="no comment" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/edit_comment1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 

    <TextView 
      android:id="@+id/text_datetime3" 
      android:text="8:20p.m." 
      android:layout_toLeftOf="@+id/edit_comment3" 
      android:layout_alignBaseline="@+id/edit_comment3" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/> 

    <EditText 
      android:id="@+id/edit_comment3" 
      android:text="no comment" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/edit_comment2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 

</RelativeLayout> 
+0

哇,谢谢。当我有时间的时候,我会过去的。谢谢。但是你可以把EditText放在更多的位置? – God

+0

您可以使用android:layout_weight浏览这两个项目。重量越高,物品使用的空间就越多。 – Matthias

+0

非常感谢,您已帮助过。 – God