如何在TextView中单击文本的特定单词时运行asyncTask

时间:2015-10-28 04:57:41

标签: android textview

大家好我想知道我是否可以在TextView中单击文本的特定单词来运行异步任务。基本上我在下面有一个Textview,我想突出显示" RESEND"字和&单击它来运行asynctask。我必须创建单独的textview文本" RESEND"或者有一些快捷方式bcoz如果我制作单独的Texview,它看起来不会像2个文本视图那样1.无论我使用垂直还是水平,它都会有所不同

   <TextView
                android:id="@+id/policy"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="4.5"
                android:text="If you haven&apos;t receive the verification code,tap RESEND"
                android:textColor="#000"
                android:textSize="@dimen/txtss" />

2 个答案:

答案 0 :(得分:0)

android.text.style.ClickableSpan可以解决您的问题。

SpannableString ss = new SpannableString("If you haven&apos;t receive the verification code,tap RESEND");
ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View textView) {

            //Start your async here           

    }
    @Override
    public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
};
//p1 is index of R in RESEND, p2 is index of D in RESEND
ss.setSpan(clickableSpan, p1, p2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

TextView textView = (TextView) findViewById(R.id.policy);
textView.setText(ss);

答案 1 :(得分:0)

您可以将xml文件中可单击的textview属性定义为 -

android:clickable="true" 

android:onClick="clickHandler"

然后在你的活动类中创建方法clickHandler(){并在该方法中调用aysncTask。

您也可以使用onclicklistner()方法将textview 替换为自定义方法clickHandler作为 -

textView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });

你可以使用两个不同的文本视图,使用linearlayout并使用水平方向,并使textview宽度和高度包含为wrap_content。将linearlayout放在相对视图中,请参阅下面的代码 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="If you haven&apos;t receive verification code," />


<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:textStyle="bold"
    android:clickable="true" 
    android:onClick="clickHandler"
    android:text="tap RESEND" />
</LinearLayout>

</RelativeLayout>