0

我试图通过android:state_hovered上的背景更改颜色。但它没有反映我的应用程序的任何更改。现在我想要当相对布局得到关注时我想要改变它的背景和我想要改变的时间我的文本视图文本的颜色。但是此代码对我不起作用请建议我更改这是我的 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>
4

2 回答 2

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 代码为中心的布局。

于 2013-07-12T07:46:07.957 回答
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;
        }
    }); 
于 2013-07-12T11:52:16.590 回答