如何突出显示整行(使用Horizo​​ntalScrollView)

时间:2010-12-29 19:11:44

标签: android android-layout android-listview

我有一个ListView,每行有两个TextView。但是,其中一个文本视图位于Horizo​​ntalScrollView内。

我希望在触摸模式中有以下行为:

1)当用户按下任何TextView时,必须突出显示整个行。他可以向左/向右滚动第一个文本视图,但整行必须保持高亮显示。

2)用户重新发布“按下”后,行必须突出显示,直到用户按下另一行或向上/向下滚动列表。

提前致谢。

行布局:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
>
    <HorizontalScrollView
        android:id="@+id/frmclientes_listview_linha_scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:fillViewport="true"
        android:scrollbars="none"
        android:scrollbarAlwaysDrawHorizontalTrack="false"
        android:scrollbarAlwaysDrawVerticalTrack="false"
        android:fadingEdge="horizontal"
        android:fadingEdgeLength="30sp"
    >
        <TextView
            android:id="@+id/frmclientes_listview_line_firstline"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentTop="true"
            android:ellipsize="marquee"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:gravity="center_vertical"
            android:focusable="false"
            android:lines="1" />
    </HorizontalScrollView>

    <TextView
        android:id="@+id/frmclientes_listview_line_secondline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/frmclientes_listview_linha_scrollView1"
        android:ellipsize="marquee"
        android:gravity="center_vertical"
        android:lines="1"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

您应该能够覆盖HorizontalScrollView.draw()

public class HorizontalScrollViewHighlight extends HorizontalScrollView {
    public boolean isHighlighted = false;
    public HorizontalScrollViewHighlight(Context context) {
        super(context, null);
    }
    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);
        if (isHighlighted)
            // highlight code
        else
            // non-highlighted code
    }
}