当没有要显示的文本时,我有一个仍占用空间的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>
答案 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中遇到很多没有可行的更改侦听器的东西,这适用于为视图添加功能的大多数问题。