在android中选择一个自定义行

时间:2013-11-01 04:31:11

标签: android android-layout android-listview

我有自定义列表视图,其中添加了少量元素,例如ImageViewTextViewView。这三个组件构成一行,我想完成整个clickable。目前发生的事情是当我将android:background="@drawable/text_selection_file"添加到ImageViewTextView时,它仅选择相应的元素背景,而不是整行。因为我有多行,所以我不能将每一行放入不同的GroupView中,因此每个下一行android:layout_below="above_view"的属性都不起作用。所以我需要找到一种方法来做这个槽,我可以选择整行。目前,它仅适用于TextViewImageView的特定选择,但不能同时适用于两者。我的XML代码低于

CODE

         //Above code for layout
         <ImageView
            android:id="@+id/homeLink"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_below="@+id/menu_view"
            android:layout_margin="8dp"
            android:contentDescription="@string/app_name"
            android:gravity="center_vertical"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/home_link"
            android:layout_width="fill_parent"
            android:layout_height="45dp"
            android:layout_below="@+id/menu_view"
            android:layout_marginLeft="45dp"
            android:gravity="center_vertical"
            android:text="Home"
            android:textColor="@color/WHITE"
            android:textSize="18sp"
            android:textStyle="bold" />

        <View
            android:id="@+id/home_view"
            android:layout_width="fill_parent"
            android:layout_height="0.5dp"
            android:layout_below="@+id/home_link"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:background="@color/VIEW_COLOR" />
         //More rows down there

1 个答案:

答案 0 :(得分:0)

您可以在ListView中为行设置onClickListener:

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
            //insert code
        }

    });

您还可以将行布局包装到复合视图中(例如此处http://www.vogella.com/articles/AndroidCustomViews/article.html)并覆盖setOnClickListener以与此视图的视图部分进行交互(ImageButton具有自定义标题,允许动态将图像上载到ImageButton并更改字体标题)

public class CaptionImageButton extends LinearLayout {
private ImageButton ibBackground;
private TextView tvCaption;


@Override
public void setOnClickListener(final View.OnClickListener onClickListener) {
    ibBackground.setOnClickListener(onClickListener);
}

}