悬停在相对布局Android上无法正常工作

时间:2013-07-12 07:06:18

标签: android android-layout

我试图在android上更改背景颜色:state_hovered.But它没有反映我的应用程序的任何更改。现在我想要的相对布局聚焦我想要改变它的背景和那个时间我想要更改我的文本视图文本的颜色。但这段代码对我不起作用请告诉我更改 这是我的XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="5dip" >

    <ImageView
        android:id="@+id/imgLogo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="5dip"
        android:padding="3dip"
        android:src="@drawable/logo_demo" />

    <RelativeLayout
        android:id="@+id/flight_relative"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_below="@+id/imgLogo"
        android:layout_marginTop="5dp"
        android:background="@drawable/button_effect"
        android:gravity="center_vertical" >

        <ImageView
            android:id="@+id/flight_list_image"
            android:layout_width="50dip"
            android:layout_height="50dip"
            android:layout_alignParentLeft="true"
            android:layout_marginRight="5dip"
            android:padding="3dip"
            android:src="@drawable/ic_launcher" />

        <TextView
            android:id="@+id/flight_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/flight_list_image"
            android:layout_marginRight="5dp"
            android:layout_marginTop="10dp"
            android:layout_toLeftOf="@+id/flight_arrow"
            android:layout_toRightOf="@+id/flight_list_image"
            android:text="@string/flight_tittle"
            android:textColor="@drawable/text_color"
            android:textStyle="bold"
            android:textSize="15dp"
             />

        <TextView
            android:id="@+id/content_flight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/flight_content"
            android:layout_marginRight="5dp"
            android:layout_toLeftOf="@+id/flight_arrow"
            android:layout_toRightOf="@+id/flight_list_image"
            android:text="@string/flight_content"
            android:textColor="#2f2f2f"
            android:textSize="10dp" />

        <ImageView
            android:id="@+id/flight_arrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/flight_content"
            android:layout_alignParentRight="true"
            android:src="@drawable/arrow" />

    </RelativeLayout>

</RelativeLayout>

这是我的样式文件,它是button_effect.xml,用于更改相对布局的背景。

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@android:color/darker_gray" android:state_hovered="true"></item>
        <item android:drawable="@drawable/gray_bg"></item>
    </selector>

这是我的text_color.xml,用于更改文本的颜色。

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true" android:color="#177f75"/>
   <item android:color="#152b72"/>
 </selector>

2 个答案:

答案 0 :(得分:1)

您可以为textview以及layout执行此类操作。

这里我使用drawables表示不同状态 - 按下,悬停和正常。

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/book_press" android:state_pressed="true"/> <!-- pressed -->
<item android:drawable="@drawable/book_focused" android:state_focused="true"/> <!-- focused -->
<item android:drawable="@drawable/book_default"/> <!-- default -->

</selector>

而不是drawables使用你的颜色。希望这会对你有所帮助。

您可以使用xml设置使用Java代码的布局。

答案 1 :(得分:0)

用它来改变悬停时的文字颜色

 textview.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN){
                //Button Pressed
            }
            if(event.getAction() == MotionEvent.ACTION_UP){
                 //finger was lifted
            }
            return false;
        }
    });