Android 在对话框列表视图中并排显示两个文本视图

Android with two textview in dialog listview side by side

我正在努力实现:

TextView1 TextView2

但是它是逐行显示的

ListView.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_marginTop="5dp"
    >

    <ListView
         android:id="@+id/list"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >

     </ListView>

</RelativeLayout>

自定义适配器的另一个 xml

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

>

<TextView
    android:id="@+id/dialog_block_territory_name"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="0"

    />

 <TextView
    android:id="@+id/dialog_block_territory_id"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_toRightOf="@+id/dialog_block_territory_name"
    android:layout_weight="0"
   />


  </RelativeLayout>

自定义适配器代码:

public class TerritorySpinnerDisplayAdapter extends BaseAdapter {

private Context mContext;
private ArrayList<String> territoryName;
private ArrayList<String> territoryId ;

public TerritorySpinnerDisplayAdapter(Context c,ArrayList<String> territoryName,ArrayList<String> territoryId) {
    // TODO Auto-generated constructor stub

    this.mContext = c;
    this.territoryName = territoryName;
    this.territoryId = territoryId;

}


@Override
public int getCount() {
    // TODO Auto-generated method stub
    return territoryName.size();
}

@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getView(int pos, View child, ViewGroup parent) {
    // TODO Auto-generated method stub
    Holder mHolder;
    LayoutInflater layoutInflater;
    if (child == null) {
        mHolder = new Holder();
        layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        child = layoutInflater.inflate(R.layout.list_territory_dialog_block,null);

        mHolder.territoryNameView = (TextView) child.findViewById(R.id.dialog_block_territory_name);
        mHolder.territoryIdView = (TextView) child.findViewById(R.id.dialog_block_territory_id);

        child.setTag(mHolder);
    }else {
        mHolder = (Holder) child.getTag();
    }
    mHolder = (Holder) child.getTag();

    if(pos < territoryName.size() && mHolder.territoryNameView!=null ){
        String name = territoryName.get(pos);
        mHolder.territoryNameView.setText(name);

    }
    if(pos < territoryId.size() && mHolder.territoryIdView!=null ){
    String bid = territoryId.get(pos);
    mHolder.territoryIdView.setText(bid);

    }


    //Log.d("@@@@@@@@@@@@@@@@@@@@@@@@Testing@@@@@@@@@@@@@@@@@@@@",blockName.get(0) + blockId.get(0) + territoryId.get(0));
    return child;
}

public class Holder {
    TextView territoryNameView;
    TextView territoryIdView;


}

}

final Dialog dialog = new Dialog(getActivity());
            dialog.setContentView(R.layout.list_view);
            dialog.setTitle("Select City");
            ListView   listView = (ListView) dialog.findViewById(R.id.list);

            dialog.show();
territoryAdapter = newTerritorySpinnerDisplayAdapter(getActivity(), 
            arrTerr, arrTerr1);
            listView.setAdapter(territoryAdapter);
            territoryAdapter.notifyDataSetChanged();

我尝试了表格布局,结果还是一样

我想,xml 文件可能有问题,

尝试这样做...

  1. 使用 LinearLayout 而不是 RelativeLayout
  2. 在线性布局中使用android:orientation="horizontal"
  3. 设置两个文本框android:layout_width="0dp"
  4. 设置两个文本框 android:layout_weight="1"

这应该能达到您的要求。