Ссылка TextView не работает в моем фрагменте с эмулятором - PullRequest
0 голосов
/ 06 октября 2018

Я хочу добавить веб-ссылку в мой TextView.Я использую TextView в моем фрагменте.Я думаю, что это не работает на эмуляторе.Я изменил эмулятор и все еще получил ту же проблему.

Вот решения, которые я пробовал:

  1. Как открыть URL из Fragment TextView?
  2. Android - гиперссылка не активируется
  3. Почему ссылка не работает в текстовом представлении?

Моя TextView внутри linearLayout

 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/privacy_policy"
        android:textColor="@color/colorPrimary"
        android:padding="10dp"
        android:textSize="17sp"
        android:textStyle="bold"
        android:autoLink="all"
        android:clickable="true"
        android:focusable="true"
        android:linksClickable="true"
        android:id="@+id/tv_privacy_policy" />

Моя строковая стоимость

 <string name="privacy_policy">Privacy Policy<a href="https://csunix.mohawkcollege.ca/~000762465/Privacy%20Policy/ielts_up.html"></a></string>

Моя onCreateView()

      @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_aboutus, container, false);

        TextView tv_privacy_policy = (TextView)rootView.findViewById(R.id.tv_privacy_policy);

//        Linkify.addLinks(tv_privacy_policy, Linkify.WEB_URLS);
        // Inflate the layout for this fragment

        tv_privacy_policy.setMovementMethod(LinkMovementMethod.getInstance());
        String text = "<a href='http://www.google.com'>Pricacy Policy</a>";
        tv_privacy_policy.setText(Html.fromHtml(text));

        return rootView;
    }

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Вы можете попробовать этот следующий код, и он работает нормально, я сам проверил.

Не используйте атрибут тега android: autoLink с ним.Потому что это вызывает LinkMovementMethod не работает.

    String textToShow="<a href=\"https://csunix.mohawkcollege.ca/~000762465/Privacy%20Policy/ielts_up.html\">Privacy Policy</a>";

        Spanned result;

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

Если вы собираетесь передать строку в XML, то вы можете сделать что-то вроде этого

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/privacy_policy"
            android:textColor="@color/colorPrimary"
            android:padding="10dp"
            android:textSize="17sp"
            android:textStyle="bold"
            android:id="@+id/tv_privacy_policy" />

    TextView tv_privacy_policy= (TextView) findViewById(R.id.tv_privacy_policy);
    tv_privacy_policy.setMovementMethod(LinkMovementMethod.getInstance());

Ниже приведен список флагов, которые могут вам помочь:

    FROM_HTML_MODE_COMPACT = 63;
    FROM_HTML_MODE_LEGACY = 0;
    FROM_HTML_OPTION_USE_CSS_COLORS = 256;
    FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32;
    FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16;
    FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2;
    FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8;
    FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4;
    FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1;

Удачи.:)

0 голосов
/ 06 октября 2018

возможно, это вам поможет:

    SpannableString string = new SpannableString("Privacy Policy");
    ClickableSpan clickableSpan = new ClickableSpan() {
        @Override
        public void onClick(View textView) {
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://csunix.mohawkcollege.ca/~000762465/Privacy%20Policy/ielts_up.html"));
            startActivity(browserIntent);
        }
    };
    string.setSpan(clickableSpan, 0, string.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

    TextView textView = (TextView) findViewById(R.id.text);
    textView.setText(string);
    textView.setMovementMethod(LinkMovementMethod.getInstance());
    textView.setHighlightColor(Color.TRANSPARENT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...