显示/隐藏文本按钮

3

我正在尝试通过单击一个 按钮 来显示文本。

这是我的 onClick 代码:

public class Uteliv extends Activity {

    public void onCrate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_uteliv);

        TextView tidiTekst = (TextView) findViewById(R.id.tidiTekst);
        tidiTekst.setVisibility(View.GONE);

        Button tidiKnapp= (Button) findViewById(R.id.tidiKnapp);
        tidiKnapp.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            tidiTekst.setVisibility(View.VISIBLE);

        }
     });
   }
}

出了什么问题?当我在我的手机上测试时,只会得到一个空白页面。

你把TextView设置为不可见了,但是它没有生效吗?你遇到了什么异常? - Sercan Ozdemir
1
你遇到了什么错误?有吗? - gh123man
1
你只写了onCreate对吧?因为这里写的是onCrate。据我所知应该会编译错误。但是如果你说它正在运行,那可能是可以的。还是要再仔细检查一下。 - Vikalp Patel
6个回答

7
除非这是您发布的一个打字错误,否则您的问题在于您没有声明正确的Activity方法。
public void onCrate(Bundle savedInstanceState) {

应该是

public void onCreate(Bundle savedInstanceState) {

此外,您应该将您的View成员变量声明为变量(在onCreate()之前声明它们,并在onCreate()内初始化)。 编辑 要显示/隐藏您的TextView,您可以使用getVisibility来确定要执行的操作。因此,代码应该如下所示:
public void onClick(View v) {
        tidiTekst.setVisibility((tidiTekst.getVisibility() == View.Visible) 
                                                ? View.GONE : View.VISIBLE);
    }

就是这样!谢谢注意 :) 当文本显示时,我该如何让它关闭? - Andreas Kvåle
你是什么意思?你想关闭的是什么“它”? - codeMagic
我不明白。您想在文本显示时隐藏文本吗?目前,您将“TextView”设置为“Gone”,然后在单击“Button”时将其设置为“VISIBLE”。您想要发生什么?您何时再次隐藏文本? - codeMagic
首先我点击按钮显示文本,然后我想再次点击它来隐藏文本。 - Andreas Kvåle

1

activity_Main.xml

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:orientation="vertical"
    android:padding="10dip" >



    <Button
        android:id="@+id/mybtn"
        style="?buttonBarButtonStyle"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:layout_weight="1"
        android:background="#c4c5c7"
        android:shadowColor="#959597"
        android:shadowDx="0"
        android:shadowDy="1"
        android:shadowRadius="1"
        android:text="Button"
        android:textColor="#ffffff"
        android:textSize="30sp"
        android:textStyle="bold" />

    <TextView
    android:id="@+id/myTextView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:text="hidden"
    android:visibility="gone"/>

</LinearLayout>

MainActivity.java的代码

private TextView mytxtvw;
private Button myButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mytxtvw=(TextView)findViewById(R.id.myTextView);
    myButton=(Button)findViewById(R.id.mybtn);

    onBtnClick();
}

public void onBtnClick()
{
    myButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mytxtvw.setVisibility((mytxtvw.getVisibility() == View.VISIBLE) 
                    ? View.GONE : View.VISIBLE);

        }
    });



}

}


0

在 XML 中:

 <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_gravity="center"
            android:layout_marginTop="@dimen/_6sdp">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="MORE"
                android:textStyle="bold"
                android:textColor="@color/darkgray"
                android:textSize="@dimen/_10sdp"
                android:gravity="left"
                android:id="@+id/moreone"/>
        </LinearLayout>
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/darkgray"
            android:layout_marginTop="@dimen/_6sdp"/>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_gravity="center"
            android:layout_marginTop="@dimen/_9sdp">
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="16) I will not indulge in any way in any act that is against the spirit of law and society. "
                android:textStyle="bold"
                android:textColor="@color/darkgray"
                android:textSize="@dimen/_10sdp"
                android:gravity="left"
                android:id="@+id/tandcone"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_gravity="center"
            android:layout_marginTop="@dimen/_6sdp">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="17) I will treat all with dignity irrespective and provide them with high level of service and remedies for their dissatisfaction any time during the course of my business as an Independent Associate."
                android:textStyle="bold"
                android:textColor="@color/darkgray"
                android:textSize="@dimen/_10sdp"
                android:gravity="left"
                android:id="@+id/tandctwo"/>
        </LinearLayout>

在 MainActivity 中:
  moreone.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            tandcone.setVisibility((tandcone.getVisibility() == View.VISIBLE)
                    ? View.GONE : View.VISIBLE);
            tandctwo.setVisibility((tandctwo.getVisibility() == View.VISIBLE)
                    ? View.GONE : View.VISIBLE);

        }
    });

0

在on-create方法外定义您的按钮和textView变量。在您发布所获得的错误之前,我会认为您正在获得空指针,因为它们在onCreate完成后超出了作用域。

TextView tidiTekst;
Button tidiKnapp;

public void onCrate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_uteliv);


    tidiTekst = (TextView) findViewById(R.id.tidiTekst);
    tidiTekst.setVisibility(View.GONE);

    tidiKnapp= (Button) findViewById(R.id.tidiKnapp);
    tidiKnapp.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            tidiTekst.setVisibility(View.VISIBLE);

        }
    });
}

测试时仍然是空白页面。 - Andreas Kvåle

0

如果你将textView声明为final,它是否有效?

final TextView tidiTekst = (TextView) findViewById(R.id.tidiTekst);

0
请在诸如Eclipse或IntelliJ IDEA之类的所见即所得(WYSIWYG)IDE中检查您的R.layout.activity_uteliv,以图形模式编辑它,布局(xml)可能存在问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接