Android:单击TextView中的特定单词时显示弹出对话框

Sri*_*har 6 android textview android-widget android-layout

在我的申请中,我有一些条款和条件的文本.

注册即表示您同意遵守我们的使用条款,并且您已阅读我们的隐私政策.

这句话使用条款隐私权政策应该是点击,并显示一个警告框.

首先,我尝试将句子分成四个TextView:

  1. 注册即表示您同意接受我们的约束
  2. 使用条款
  3. 并且你已经阅读了我们的
  4. 隐私政策.

这很好用,具有以下布局XML:

 <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/termsandcondtion"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:orientation="horizontal" >

        <TextView
            android:id="@+id/terms_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/terms_1"
            android:textColor="#000000"
            android:textSize="12dp" />

        <TextView
            android:id="@+id/terms"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:onClick="showTerms"
            android:text="@string/terms_2"
            android:textColor="#000000"
            android:textSize="12dp" />

        <TextView
            android:id="@+id/terms_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/terms_3"
            android:textColor="#000000"
            android:textSize="12dp" />

        <TextView
            android:id="@+id/termsofuse"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:onClick="showTermsofUse"
            android:text="@string/terms_4"
            android:textColor="#000000"
            android:textSize="12dp" />
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

显示弹出窗口的代码是:

WebView wv = new WebView(this);

    wv.loadUrl(url);

    wv.setWebViewClient(new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);

            return true;
        }
    });
    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle("Privacy Policy");
    alert.setView(wv);
    alert.setNegativeButton("Close", new DialogInterface.OnClickListener()
    {
        public void onClick(DialogInterface dialog, int id)
        {
        }
    });
    alert.show();
Run Code Online (Sandbox Code Playgroud)

问题是四个TextViews彼此没有正确对齐.这意味着我必须使用一个TextView并在TextView单击特定单词(使用条款,隐私政策)时显示弹出式对话框.

做这个的最好方式是什么?

gsb*_*gsb 10

我想你需要Spannable Strings.此外,这个问题会有所帮助.创建ClickableSpan将是您的问题的一个很好的选择.

SpannableString stringToSpan = new SpannableString("<your sentence>");
TextView textView = (TextView) findViewById(R.id.<yourTextView ID>);
textView.setText(stringToSpan);
textView.setMovementMethod(LinkMovementMethod.getInstance());
ClickableSpan clickableSpan = new ClickableSpan() {
      @Override
      public void onClick(View textView) {
       //alert box code here
       }
      };
stringToSpan.setSpan(clickableSpan, <start position of span>,<end position>,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
   }
Run Code Online (Sandbox Code Playgroud)