如何将 link 添加到 Switch 小部件的文本中?

How can I add a link to the text of a Switch widget?

我正在尝试进行 "Accept terms and conditions" 切换。我能够将 link 添加到开关中,但问题是 link 也在开关按钮上,所以每次我按下按钮接受条款和条件时,它都会将我带到网页.

我希望只有被选为 link 的文本才是 link。

这是我现在的代码:

strings.xml:

<string name="terms">Accept<a href="http://www.google.es">terms & conditions</a>.</string>

register.xml:

<Switch
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/terms"
     android:id="@+id/registerSwitch"/>

Register.class:

Switch terms = (Switch) findViewById(R.id.registerSwitch);
terms.setMovementMethod(LinkMovementMethod.getInstance());

我怎样才能让文本 "terms & conditions" 成为 link 而不是切换按钮?

尝试添加android:linksClickable

<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/terms"
android:linksClickable="true"
android:id="@+id/registerSwitch"/>

试试下面的代码

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/swtch"
    android:text="@string/terms"
    android:linksClickable="true"
    android:textIsSelectable="true"
    android:autoLink="web"/>

在strings.xml

<string name="terms">Accept <a href=""http://www.google.es">"http://www.google.es</a>terms &amp; conditions</string>

最后在 activity

Switch terms = (Switch) findViewById(R.id.registerSwitch);
terms.setMovementMethod(LinkMovementMethod.getInstance());

为什么不将文本单独显示为 TextView 和 TextView 上的 setOnClickListener 以打开您的 link。有些是这样的:

         <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Switch
                android:id="@+id/your_switch"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <TextView
                android:id="@+id/terms_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Accept terms &amp; conditions" />

        </LinearLayout>

在Activity

TextView termsText = (TextView)findViewById(R.id.terms_text);
    termsText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.yoururl.com"));
            startActivity(browserIntent);
        }
    });