Android - onListItemClick

时间:2014-07-07 06:23:56

标签: android listview

我有一个列表视图,其中包含每个列表元素的图像视图和文本视图,如下面的屏幕截图所示。图像和文本视图一起构成可点击元素,因此如果点击任何文本的右侧没有任何反应,则必须点击文本或图像。如何使链接跨越整个列表元素的宽度,基本上跨越屏幕的右边缘?

enter image description here

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

    <ImageView
    android:id="@+id/icon"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="4dp"
    android:layout_gravity="center|right"
    android:gravity="center|right"
    android:src="@drawable/image5" >
</ImageView>

<TextView
    android:id="@+id/label"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:textSize="20sp"
    android:layout_marginTop="4dp"
    android:layout_gravity="center|right"
    android:gravity="center|right" >
</TextView>
</LinearLayout>

3 个答案:

答案 0 :(得分:1)

将您的父布局widthheight设为match_parent / fill_parent

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

    <ImageView
    android:id="@+id/icon"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="4dp"
    android:layout_gravity="center|right"
    android:gravity="center|right"
    android:src="@drawable/image5" >
</ImageView>

<TextView
    android:id="@+id/label"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:textSize="20sp"
    android:layout_marginTop="4dp"
    android:layout_gravity="center|right"
    android:gravity="center|right" >
</TextView>
</LinearLayout>

答案 1 :(得分:0)

在列表视图项目布局中,将textview的宽度设置为0dp,并将android:layout_weight="1"属性添加到textview

答案 2 :(得分:0)

您可以在Adapters getView方法中创建类似的内容:

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

   View vi = convertView;
   if(convertView==null) { ... }
   ...
   vi.setOnClickListener(new OnListItemClickListener(position));
   return vi;
}

private class OnListItemClickListener implements OnClickListener {

   private int mPosition;

   OnListItemClickListener(int pos) {

      this.mPosition = pos;
   }

   @Override
   public void onClick(View arg0) {

      //DO WHATEVER YOU WANT WITH YOUR "CLICK". THE POSITION CLICKED IS STORED INSIDE mPosition.
   }
}