android中带有Kotlin的可点击复选框文本

android中带有Kotlin的可点击复选框文本,android,android-studio,checkbox,kotlin,Android,Android Studio,Checkbox,Kotlin,我正在用kotlin创建一个android应用程序。我有一个EULA(最终用户许可协议)复选框,我需要使复选框的一部分文本可点击,以便显示条款和条件 XML文件 那么,有没有办法直接从XML文件执行此操作?如果没有,我如何在Kotlin中执行 注意:我正在开发的应用程序的API是21。你可以这样做,使用水平线性布局,不带文本的复选框和要显示为复选框文本的文本视图。现在您可以分别处理复选框和文本视图上的单击 <LinearLayout android:layout_w

我正在用
kotlin
创建一个android应用程序。我有一个EULA(最终用户许可协议)
复选框
,我需要使复选框的一部分文本可点击,以便显示条款和条件

XML文件

那么,有没有办法直接从
XML
文件执行此操作?如果没有,我如何在Kotlin中执行


注意:我正在开发的应用程序的API是21。

你可以这样做,使用水平线性布局,不带文本的复选框和要显示为复选框文本的文本视图。现在您可以分别处理复选框和文本视图上的单击

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

        <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="I agree to terms and conditions"/>
    </LinearLayout>

结果如下所示


您可以执行类似操作,使用水平线性布局和不带文本的复选框,以及要显示为复选框文本的文本视图。现在您可以分别处理复选框和文本视图上的单击

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

        <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="I agree to terms and conditions"/>
    </LinearLayout>

结果如下所示


在@Karan Mer和一些代码的帮助下,问题得到了解决,因此我将在这里介绍总体解决方案

XML文件


科特林档案

override-fun-onCreate(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u注册)
val textView=findViewById(R.id.Terms和条件文本)
val text=getText(R.string.terms和条件)
val ss=SpannableString(文本)
val ClickableSpan 1=对象:ClickableSpan(){
覆盖有趣的onClick(小部件:视图){
//在这里,您可以将其设置为在单击时执行任何操作
}
//这是为了更改链接的默认外观
重写fun updateDrawState(ds:TextPaint){
super.updateDrawState(ds)
ds.color=color.BLUE
ds.isUnderlineText=false
}
}
//在这里,您可以在字符串中设置链接的起始字符和结束字符
ss.setSpan(可点击SPAN 1、28、45、SPAN_独占性SPAN_独占性)
textView.text=ss
textView.movementMethod=LinkMovementMethod.getInstance()
}

在@Karan Mer的帮助下,一些代码发现问题已经解决,因此我将在这里介绍总体解决方案

XML文件


科特林档案

override-fun-onCreate(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u注册)
val textView=findViewById(R.id.Terms和条件文本)
val text=getText(R.string.terms和条件)
val ss=SpannableString(文本)
val ClickableSpan 1=对象:ClickableSpan(){
覆盖有趣的onClick(小部件:视图){
//在这里,您可以将其设置为在单击时执行任何操作
}
//这是为了更改链接的默认外观
重写fun updateDrawState(ds:TextPaint){
super.updateDrawState(ds)
ds.color=color.BLUE
ds.isUnderlineText=false
}
}
//在这里,您可以在字符串中设置链接的起始字符和结束字符
ss.setSpan(可点击SPAN 1、28、45、SPAN_独占性SPAN_独占性)
textView.text=ss
textView.movementMethod=LinkMovementMethod.getInstance()
}

那么我如何才能只设置
条款和条件
部分可点击?将click listener设置为only textview。这会将hole textview设置为可点击,我只需要
条款和条件
部分,这样我就可以将其设置为蓝色,看起来像大多数EULA复选框中看到的链接。我正在寻找类似但在
kotlin
。您可以将textview的宽度设置为wrapcontent,这样,除非您提供足够大的填充,否则它实际上类似于单击文本。关于更改文本的颜色,这将很容易。那么我如何才能只设置
条款和条件
部分可单击?将click listener设置为only textview。这将设置孔TextVew为可单击,我只需要
条款和条件
部分,这样我就可以将其设置为蓝色,看起来像大多数EULA复选框中看到的链接我在
kotlin
中查找类似于but的内容。您可以将textview的宽度设置为wrapcontent,因此,除非您提供足够大的填充,否则它实际上与单击文本类似。关于更改文本的颜色,这将很容易。这是在单击textview时获取背景色,为什么会发生这种情况?这是在单击textview时获取背景色,为什么会发生这种情况?
<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

        <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="I agree to terms and conditions"/>
    </LinearLayout>
<LinearLayout
        android:id="@+id/checkbox_Layout"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <CheckBox
            android:id="@+id/accept_terms_and_conditions"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>


        <TextView
            android:id="@+id/Terms_and_condition_text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="0dp"
            android:layout_marginBottom="0dp"
            android:text="I have read and accept the Terms & Conditions"
            android:textColor="#000000"
            android:textSize="16sp"/>
    </LinearLayout>
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_sign_up)



    val textView = findViewById<TextView>(R.id.Terms_and_condition_text)

    val text = getText(R.string.terms_and_conditions)

    val ss = SpannableString(text)

    val clickableSpan1 = object : ClickableSpan() {
        override fun onClick(widget: View) {
            //here you can set it to do whatever you want when clicked
        }


        //This is in order to change the default appereance of the link
        override fun updateDrawState(ds: TextPaint) {
            super.updateDrawState(ds)
            ds.color = Color.BLUE
            ds.isUnderlineText = false
        }
    }

    //here you set the starting and ending char of the link in the string
    ss.setSpan(clickableSpan1, 28, 45, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

    textView.text = ss
    textView.movementMethod = LinkMovementMethod.getInstance()
}