如何在Android中捕获RelativeLayout按下状态?

时间:2012-06-23 11:42:12

标签: android state relativelayout pressed

我有相对布局,里面有两个TextView。 当按下RelativeLayout时,如何更改文本颜色TextViews?

我尝试使用过选择器,但相对布局不支持文本颜色属性。

使用OnFocus和OnTouch侦听器尝试捕获相对布局按下状态,但它们不起作用(OnFocusChangeListener)或在一侧工作(OnTouchListener)。

代码:

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="243dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:background="@drawable/singup_button_selector"
        android:clickable="true"
        android:focusable="true"
        android:gravity="center"
        android:id="@+id/sungup"
        android:textColor="@drawable/singup_button_text_selector"
        android:focusableInTouchMode="true">

        <TextView
            android:id="@+id/singupTV1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="@string/singup"
            android:textColor="#3c5775"/>




        <TextView
            android:id="@+id/singupTV2"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/singupTV1"
            android:layout_marginTop="15dp"
            android:gravity="center"
            android:text="@string/singup_extended"
            android:textColor="#506378"
            android:textSize="15dp" />

    </RelativeLayout>

2 个答案:

答案 0 :(得分:0)

您可以在RelativeLayout上设置onClickListener,然后在onClick方法中,更改代码中两个TextView中的文本颜色。

答案 1 :(得分:0)

对我有用的是设置OnTouchListener

setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event)
    {
        if(event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
            // focus in
        } else{
            // focus out
        }

        return false;
    }
});