单击TextView

时间:2017-01-25 13:45:54

标签: java android textview

我有一个文本视图,显示一些HTML并正确显示。如果HTML中包含仅包含网址文字的链接,我可以点击链接将其打开,但如果网址归因于其他文字,请执行以下操作:

<a href="https://cdn.kyfb.com/KYFB/assets/File/Federation/Across%20Kentucky/2017/January/AK_Promo_Jan_23_2017_mixdown.mp3">Listen here</a></strong></p>

&#34;在这里听#34;在我的文字视图中看起来像是一个可点击的链接,但它无法被选中。

import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;
import android.text.method.LinkMovementMethod;

public class BenefitDetailActivity extends BaseActivity {

    static Context context;
    TextView detailTextView;
    String descriptionText;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_benefit_details);
        context = getApplicationContext();

        Intent detailIntent = getIntent();
        descriptionText = detailIntent.getStringExtra("description");

        detailTextView = (TextView)findViewById(R.id.benefitText);

        Typeface kfb = Typeface.createFromAsset(getAssets(), "FranklinGothicStd-ExtraCond.otf");
        detailTextView.setTypeface(kfb);
        detailTextView.setTextSize(20);

        System.out.println("DESCRIPTION: " + descriptionText);
        detailTextView.setText(Html.fromHtml(descriptionText));
    }
}

布局:

<TextView
        android:id="@+id/benefitText"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingTop="20dp"
        android:paddingBottom="20dp"
        android:background="@color/transparent"
        android:textColor="@color/white_text"
        android:autoLink="all" />

根据其他人的建议,我已添加

detailTextView.setMovementMethod (LinkMovementMethod.getInstance());

android:linksClickable="true"

有了这个问题,当我添加setMovementMethod()时,链接的文本(在这里监听)不再显示为链接,仍然无法选择。

2 个答案:

答案 0 :(得分:2)

将以下属性添加到布局文件

中的textview
<TextView
    android:id="@+id/benefitText"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="20dp"
    android:paddingBottom="20dp"
    android:background="@color/transparent"
    android:textColor="@color/white_text"
    android:autoLink="all"
    android:linksClickable="true"
    />

并在setMovementMethod上添加以下行。

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
        detailTextView.setText(Html.fromHtml(descriptionText,Html.FROM_HTML_MODE_LEGACY));
    } else {
        detailTextView.setText(Html.fromHtml(descriptionText));
    }
    detailTextView.setMovementMethod(LinkMovementMethod.getInstance());

答案 1 :(得分:1)

我通过添加detailTextView.setMovementMethod(LinkMovementMethod.getInstance());修复此问题 和android:linksClickable="true"。我还必须删除android:autoLink="all"