0

カスタム アダプター (タイル) デザインのリストビューがあります。すべて正常に動作するはずですが、layout_height に固定値を指定しても、til (リストビュー アイテムの背景) が伸びすぎます。コードは次のとおりです。

これは、カスタム タイルの xml です。高さが 85 dp に固定されていることに注意してください。バックグラウンド ドローアブルは、この高さを超えて伸びるべきではありませんか?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="85dp"
    android:background="@drawable/tile_job" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="9dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="13dp"
        android:text="Title" />

    <TextView
        android:id="@+id/pickup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="38dp"
        android:layout_alignLeft="@+id/title"
        android:textSize="11dp"
        android:text="Pickup Address" />

    <TextView
        android:id="@+id/destination"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/pickup"
        android:layout_below="@+id/pickup"
        android:layout_marginTop="6dp"
        android:textSize="11dp"
        android:text="Destination Address" />

    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/destination"
        android:layout_alignParentRight="true"
        android:layout_marginRight="40dp"
        android:text="Time"
        android:textSize="11dp" />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/time"
        android:layout_below="@+id/time"
        android:text="Date"
        android:layout_marginTop="7dp"
        android:textSize="11dp" />

</RelativeLayout>

今、私は単純なリストビューでこれを使用しています:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/app_bg" >

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/strip_top" >

        <TextView
            android:id="@+id/strip_text"
            style="@style/TopStripText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="Locate" />
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="280dp"
        android:layout_height="440dp"
        android:layout_below="@+id/relativeLayout1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:background="@drawable/bg_booking" >

        <ListView
            android:id="@+id/activebookings"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" >
        </ListView>
    </RelativeLayout>

タイルが縦方向に伸びすぎている原因は何ですか?

===========

EDIT 要求されたコードは次のとおりです。

レイアウトのインフレ:

public class JobAdapter extends BaseAdapter
{
    private ArrayList<Job> bookingArrayList;
    private LayoutInflater mInflater;

    public JobAdapter(Context context, ArrayList<Job> results)
    {
        bookingArrayList = results;
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount()
    {
        return bookingArrayList.size();
    }

    @Override
    public Object getItem(int arg0)
    {
        return bookingArrayList.get(arg0);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        ViewHolder holder;
        if (convertView == null)
        {
            convertView = mInflater.inflate(R.layout.tile_job, null);
            holder = new ViewHolder();
            holder.date = (TextView) convertView.findViewById(R.id.date);
            holder.time = (TextView) convertView.findViewById(R.id.time);
            holder.pickup = (TextView) convertView.findViewById(R.id.pickup);
            holder.destination = (TextView) convertView.findViewById(R.id.destination);
            holder.title = (TextView) convertView.findViewById(R.id.title);

            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.date.setText(bookingArrayList.get(position).getDate());
        holder.time.setText(bookingArrayList.get(position).getTime());
        holder.pickup.setText(bookingArrayList.get(position).getPickup());
        holder.destination.setText(bookingArrayList.get(position).getDestination());
        holder.title.setText(bookingArrayList.get(position).getTitle());

        return convertView;
    }

    static class ViewHolder
    {
        TextView date;
        TextView time;
        TextView pickup;
        TextView destination;
        TextView title;
    }
}
4

1 に答える 1

1

次の行を作成します。

convertView = mInflater.inflate(R.layout.tile_job, null);

これを試してください:

convertView = mInflater.inflate(R.layout.tile_job, parent, false);

親レイアウトをアタッチしない場合、xml からのレイアウト パラメータは無視されます。ビューをすぐにルートにアタッチしないため、false を設定します (これは、ビューが返されたときに自動的に行われます)。この問題の詳細については、こちらをご覧ください。

于 2013-03-04T12:53:10.760 に答える