1

我的目标是隐藏文本并保持 textview 在活动中占据其空间,我已经通过使用将我的文本设置为不可见:

tv.setVisibility(View.INVISIBLE);

当按钮单击它显示文本时,除了我的代码导致隐藏整个文本视图的结果之外,每件事都正常工作,不仅隐藏文本,因为我将文本视图背景设置为可绘制形状,在文本周围形成红色边框:

android:background="@drawable/border1" 

  <TextView 
  android:id="@+id/introclusion_tv3" 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:background="@drawable/border1" 
  android:textSize="20sp" /> 

启动应用程序时,您只能看到空白空间,单击按钮后将用文本填充,但那里没有边框(来自形状背景),所以它隐藏了整个文本视图,我需要它只隐藏文本并保持文本视图与其当文本设置为 INVISIBLE 时显示的背景,

任何帮助将不胜感激,谢谢。

我就是这样做的:

  TextView tv11=(TextView)findViewById(R.id.introclusion_tv3);
    tv11.setText(Html.fromHtml(getString(R.string.introclusion_one)));
    tv11.setVisibility(View.INVISIBLE); 

然后单击但并输入正确的密码后,它将显示文本为:

   Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);

        dialogButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                 dialog.dismiss();

                EditText password = (EditText) dialog.findViewById(R.id.password);

                if( password.getText().toString().length() > 0 ) {
                    if( password.getText().toString().equals("test")) {

                        TextView tv11=(TextView)findViewById(R.id.introclusion_tv3);
                        tv11.setTypeface(FontFactory.getBFantezy(getBaseContext()));
                        tv11.setText(Html.fromHtml(getString(R.string.introclusion_one)));
                        tv11.setVisibility(View.VISIBLE);
                        }
4

4 回答 4

3

透明文本颜色隐藏文本:

<TextView 
  android:id="@+id/introclusion_tv3" 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:background="@drawable/border1" 
  android:textColor="@android:color/transparent"
  android:textSize="20sp" /> 

当你想显示你的文本时,使用方法以编程方式更改文本颜色setTextColor()

tv11.setTextColor(color);
于 2013-09-18T22:08:49.617 回答
2
// try this way
<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/border1">

        <TextView
            android:id="@+id/introclusion_tv3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp" />

</LinearLayout>
于 2013-09-19T06:36:11.380 回答
1

你可以做一个简单的技巧:写两个字符串

假设在您的第一段和第二段代码中删除此行

 tv11.setVisibility(View.INVISIBLE); 

 tv11.setVisibility(View.VISIBLE);

所以它会是

TextView tv11=(TextView)findViewById(R.id.introclusion_tv3);
tv11.setText(Html.fromHtml(getString(R.string.introclusion_one)));

然后在第二部分写如下;

  if( password.getText().toString().equals("test")) {

       TextView tv11=(TextView)findViewById(R.id.introclusion_tv3);
       tv11.setTypeface(FontFactory.getBFantezy(getBaseContext()));                         
       tv11.setText(Html.fromHtml(getString(R.string.introclusion_one_appear)));                       
                    }

第一个字符串将为空

 <string name="introclusion_one">

第二个字符串,您将在其中写入文本

 <string name="introclusion_one_appear">

希望对你有所帮助。

于 2013-09-18T23:07:16.663 回答
0

将文本视图中的内容保存为这样的字符串:

        String x = (String)tv11.getText();

然后像这样使文本视图为空:

String x = "";
for(int i = 0; i < x.length(); i++){
x +=" ";
}
tv11.setText(x);

要使 textview 再次可见,请执行以下操作:

tv11.setText(x);
于 2013-09-18T22:08:47.620 回答