繁体   English   中英

如何为有一个TextView左对齐和一个TextView右对齐的ListView行创建XML布局?

[英]How do I make an XML layout for a ListView row where there is a TextView left-aligned and a TextView right-aligned?

基本上,我要查找的是ListView中的行,如下所示:

Title:               Harry Potter
Hardcover:                    Yes
Own:                           No
Country:            United States

有人可以发布这些行之一的XML布局吗? 我的代码似乎无法正确处理。

这就是我的普遍错误,无法正常工作:

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

  <TableLayout
        android:id="@+id/tableLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0"
         >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
      android:id="@+id/txtKey"
      android:layout_height="fill_parent"
      android:layout_gravity="left" 
      android:textSize="18dip" 
      android:layout_marginLeft="8dip"
      android:textStyle="bold"
      android:layout_marginTop="2dp"
      android:layout_marginBottom="2dp"
      android:text="test"
      />

            <TextView
      android:id="@+id/txtValue"
      android:layout_height="fill_parent"
      android:layout_gravity="right" 
      android:textSize="18dip" 
      android:layout_marginRight="8dip"
      android:layout_marginTop="2dp"
      android:layout_marginBottom="2dp"
      android:text="test2"
      />

        </TableRow>

        </TableLayout>

</LinearLayout>

得到它了。

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

  <TableLayout
        android:id="@+id/tableLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0"
         >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/txtKey"
                android:text="Some text"
                android:textSize="18dip"
                android:textStyle="bold"
                android:layout_marginLeft="8dip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:layout_weight="1.0"
                android:layout_marginTop="2dp"
                android:layout_marginBottom="2dp"
            />

            <TextView
                android:id="@+id/txtValue"
                android:text="Some text"
                android:textSize="18dip"
                android:layout_marginRight="8dip"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="right"
                android:layout_weight="1.0"
                android:layout_marginTop="2dp"
                android:layout_marginBottom="2dp"
            />

        </TableRow>

        </TableLayout>

</LinearLayout>

res / layout / listitem.xml:

<?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">

    <TextView 
        android:id="@+id/textLeft"
        android:layout_weight="1"
        android:gravity="left"
        android:layout_gravity="left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView 
        android:id="@+id/textRight"
        android:layout_weight="1"
        android:gravity="right"
        android:layout_gravity="right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

然后在您的活动中:

    ListView listView = (ListView) findViewById(R.id.list);
    listView.setAdapter(new BaseAdapter() {

        final String[][] keysAndValues = {
                {"key1", "value1"},
                {"key2", "value2"},
                {"key3", "value3"}
        };


        @Override
        public int getCount() {
            return keysAndValues.length;
        }

        @Override
        public String[] getItem(int position) {
            return keysAndValues[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

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

            TextView[] foundTextFields;

            if(convertView == null) {
                convertView = LayoutInflater.from(parent.getContext()).inflate(
                        R.layout.listitem, parent, false);
                foundTextFields = new TextView[] {
                        (TextView) convertView.findViewById(R.id.textLeft),
                        (TextView) convertView.findViewById(R.id.textRight)                     
                };
                convertView.setTag(foundTextFields);
            }
            else {
                foundTextFields = (TextView[]) convertView.getTag();
            }

            String[] item = getItem(position);
            foundTextFields[0].setText(item[0]);
            foundTextFields[1].setText(item[1]);

            return convertView;
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM