Android:TextView 占用空间,没有文字
Posted
技术标签:
【中文标题】Android:TextView 占用空间,没有文字【英文标题】:Android: TextView takes up space with no text 【发布时间】:2011-12-05 03:40:00 【问题描述】:当没有要显示的文本时,我的 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_
android:layout_
android:gravity="center"
android:layout_marginTop="3dp"
android:layout_marginRight="3dp"
android:background="#ff737373"
android:padding="3dp"
android:minWidth="64dp" >
<ImageView
android:layout_
android:layout_
android:tag="tabImage"></ImageView>
<TextView
android:layout_
android:layout_
android:textSize="16sp"
android:tag="tabCaption"
android:textColor="#ffd9d9d9" />
</LinearLayout>
【问题讨论】:
【参考方案1】:如果你想让一个文本视图消失如果它的文本是null
然后使用android:visibility
或以编程方式使用textview.setVisibility(View.INVISIBLE);
或textview.setVisibility(View.GONE);
。
【讨论】:
但这使它总是不可见或消失。我希望 textview 仅在未设置为任何文本时才消失。 所以你不能测试textview是否有文字吗? 但是View.INVISIBLE
和View.GONE
有很大区别。
我只是提出了功能,可以根据他的要求实现。还是让我说清楚:看不见的意思是那里有视野,但没有视野。而在 GONE 中,两者都不存在。
我正在寻找在 xml 中设置的东西,当它检测到没有可用的文本时,它会自动删除或隐藏 textview。正如我所指出的,这会在 OS 2.2 中自动发生,但不会在 1.6 中发生,因此 Google 改变了这种行为。无论如何,我决定在没有文本可用时以编程方式删除 TextView。【参考方案2】:
对于你的要求,你必须使用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 中使用它。
【讨论】:
【参考方案3】:textview.setVisibility(View.INVISIBLE);
textview.setHeight(0);
【讨论】:
【参考方案4】:只是为了给出更完整的答案。您可以通过检查通过 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 中没有遇到很多没有可行的更改监听器的事情,这适用于向视图添加功能的大多数问题。
【讨论】:
以上是关于Android:TextView 占用空间,没有文字的主要内容,如果未能解决你的问题,请参考以下文章