0

我有一个带有图像的文本视图,我想更改该图像,只要用户按住文本视图并且当他完成单击时我想返回旧图像,请问如何?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rl_simple_list_item_header"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#FFFFFF"
    android:focusable="true"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tv_food_profile_favorite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginRight="50dip"
        android:drawableTop="@drawable/favorite"
        android:text="@string/favorite"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/tv_food_profile_addToBasket"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="50dip"
        android:drawableTop="@drawable/add_to_basket"
        android:text="@string/tv_addToBasket"
        android:textColor="#000000" />

</RelativeLayout>

爪哇

TextView tv_addToBasket;
tv_addToBasket = (TextView)findViewById(R.id.tv_food_profile_addToBasket);

笔记:

我可以更改图像,我只是在询问我应该使用哪个监听器(或其他东西),

非常感谢你

编辑

tv_addToBasket.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                return false;
            }
        });
4

2 回答 2

1

我有一个带有图像的文本视图,我想更改该图像,只要用户按住文本视图并且当他完成单击时我想返回旧图像,请问如何?

所以第一个想法是使用OnTouchListener(),当你触摸时,TextView只需调用setPressed()方法并将其设置为true并且 while 为 true 以便更改背景。

当您触摸时,请再次调用setPressed()方法并将其设置为false并更改背景。

于 2013-02-16T11:50:23.990 回答
0

您的问题有两种可能的解决方案。首先设置您的android:clickable="true"属性,然后使用选择器或按代码处理

1)为您想要更改的drawable使用选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/your_drawable_here" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/your_drawable_here" /> <!-- focused -->
    <item android:drawable="@android:color/transparent" /> <!-- default -->
</selector>

2)为您的文本视图使用处理程序

TextView tv = (TextView)findViewById(R.id.tv_food_profile_addToBasket);
tv.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // change image per code
    }
})
于 2013-02-16T11:54:25.273 回答