Android:TextView占用没有文本的空间

时间:2011-10-11 09:28:37

标签: android textview collapse

当没有要显示的文本时,我有一个仍占用空间的TextView。这仅在OS 1.6上发生。当我的应用程序在2.2上运行时,TextView的高度会崩溃,因此它不会占用任何空间。我是否可以在TextView中设置一些属性,使其在没有设置文本时崩溃或消失?这是我的xml代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="center"
  android:layout_marginTop="3dp"
  android:layout_marginRight="3dp" 
  android:background="#ff737373"
  android:padding="3dp"
  android:minWidth="64dp" >
  <ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:tag="tabImage"></ImageView>
  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:tag="tabCaption"
    android:textColor="#ffd9d9d9" />
</LinearLayout>

4 个答案:

答案 0 :(得分:5)

如果您希望将文本视图消失,如果其文字为null,则使用android:visibility或以编程方式使用textview.setVisibility(View.INVISIBLE);textview.setVisibility(View.GONE);。< / p>

答案 1 :(得分:1)

根据您的要求,您必须使用TextWatcher,然后当文本为空时,只需让TextView消失:

    your_text_view.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            if(your_text_view.getText().toString().equals("")){
                your_text_view.setVisibility(View.GONE);
            }
        }
    });

并且只要您想要更改其中的文字,只需在设置新文本之前使用your_text_view.setVisibility(View.VISIBLE);,如果新文本为空,则不会显示,因为它将在之前消失你甚至注意到,如果它已经是可见的,这条线不会造成任何伤害或感情。

只需确保将TextView声明为常规变量,以便能够在TextWatcher中使用它。

答案 2 :(得分:0)

textview.setVisibility(View.INVISIBLE);
textview.setHeight(0);

答案 3 :(得分:0)

只是提供更完整的答案。您可以通过TextChangedListener

更改每次更改时显示的文本来提供TextView AutoCollapse功能。

我只想使用

.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if(charSequence.length()>0)
                    textView.setVisibility(View.VISIBLE);
                else textView.setVisibility(View.INVISIBLE);
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

现在它具有您正在寻找的功能。 我没有在Android UI中遇到很多没有可行的更改侦听器的东西,这适用于为视图添加功能的大多数问题。