跨 TextView 使用可见/不可见方法创建子文本

Posted

技术标签:

【中文标题】跨 TextView 使用可见/不可见方法创建子文本【英文标题】:Creating subText with visible/invisible method across TextViews 【发布时间】:2021-06-26 17:40:33 【问题描述】:

我创建了两个文本视图,第一个是主标题,第二个是标题的子文本。所以我想让潜台词的可见性取决于点击主标题。 说起来很简单,但是我尝试了很多方法,MainActivity.java一直崩溃。

在第二步中,我希望在第一个标题下有一个不同的主标题,并且上面的子文本可以在它们之间切换。

也许有一个更简单的小部件而不是 textView,但我找不到。

请帮忙。 谢谢。

Ps:字符串很好用,没有问题。

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MainActivity">

<ScrollView
    android:layout_
    android:layout_>
    <RelativeLayout
        android:layout_
        android:layout_>

        <TextView
            android:id="@+id/textView"
            android:layout_
            android:layout_
            android:textSize="18sp"
            android:layout_marginStart="20dp"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="20dp"
            android:layout_marginEnd="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginBottom="100dp"
            android:clickable="true"
            android:focusable="true"
            android:text="@string/text1"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.062" />

        <TextView
            android:id="@+id/textView2"
            android:layout_
            android:layout_
            android:text="@string/text11"
            android:textAppearance="@android:style/TextAppearance.Medium"
            android:textSize="15sp"
            android:layout_alignTop="@id/textView"
            android:layout_marginTop="35dp"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            app:layout_constraintVertical_bias="0.083"
            android:visibility="invisible"
            tools:visibility="visible" />
    </RelativeLayout>

MainActivity.java

package com.example.Notes;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.text.style.ClickableSpan;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity 

    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_MainActivity);

    

编辑:将此代码添加到 java 是解决方案:

TextView title = findViewById(R.id.textView);
        TextView subText = findViewById(R.id.textView2);

        title.setOnClickListener(v -> 
             if (subText.getVisibility() == View.VISIBLE)
                        subText.setVisibility(View.INVISIBLE);
                    else
                        subText.setVisibility(View.VISIBLE);
        );

【问题讨论】:

【参考方案1】:

谢谢,我刚刚修改了这部分,它变成了我想要的:

 //subText.setVisibility(View.VISIBLE); //OR View.GONE OR View.INVISIBLE
                    if (subText.getVisibility() == View.VISIBLE)
                        subText.setVisibility(View.INVISIBLE);
                    else
                        subText.setVisibility(View.VISIBLE);

【讨论】:

欢迎来到 Stack Overflow!您应该将我的答案标记为正确,而不是复制我的答案进行轻微修改以满足您的确切需求并将其发布为您自己的。 啊,谢谢,对不起,我点击了那个解决按钮。 不用担心。 :) 我很高兴能提供帮助【参考方案2】:

要通过单击title 文本视图来更改subText 的可见性,可以这样做:

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_MainActivity);

        TextView title = findViewById(R.id.textView);
        TextView subText = findViewById(R.id.textView2);

        title.setOnClickListener(v -> 
            subText.setVisibility(View.VISIBLE); //OR View.GONE OR View.INVISIBLE
        );
    


【讨论】:

以上是关于跨 TextView 使用可见/不可见方法创建子文本的主要内容,如果未能解决你的问题,请参考以下文章

如何动态地使这个子 Fragment 的 TextView 可见/不可见?

如果 MutableList 为空,如何更改 TextView 的可见性? (安卓/科特林)

滚动视图中的最后一个视图在我的选项卡活动中不可见

在故障回调中改进内部设置textview可见性

ListView 使 textview 在超出屏幕可见性时可见

在 AlertDialog 正按钮上更改 textView 的可见性