Android布局中使用visibility属性为GONE的含义

29

四个视图使用相同的xml。我只想为视图1显示一个线性布局。 我在xml中加入了android:visibility="gone"。然后对于视图1,我正在执行以下操作-

LinearLayout layone= (LinearLayout) view.findViewById(R.id.layone);

layone.setVisibility(View.VISIBLE);

但是这并没有将可见性设置为可见。

在xml中将一个视图声明为GONE后,是否有可能显示该视图?

我不想仅仅通过以下方式来改变逻辑:

layone.setVisibility(View.GONE);

除了视图1之外,每个视图都是如此。

有什么想法或评论吗?

更新:

我的 xml -

<TextView
                android:id="@+id/layone"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Previous Page"
                android:textColor="#000000"
                android:textSize="16dp"
                android:paddingLeft="10dp"
                android:layout_marginTop="10dp"
                android:visibility="gone" />
         <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="50dp"
            android:orientation="horizontal"
            android:padding="10dp"
            android:gravity="center_vertical"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"          
            android:tag="PrevEntries"     
            android:id="@+id/laytwo"
            android:layout_marginTop="10dp"
            android:background="@layout/roundedtext"
            android:visibility="gone" >

            <TextView
                android:id="@+id/laythree"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Previous Page"
                android:textColor="#000000"
                android:textSize="18dp"
                android:gravity="center"
                android:textStyle="bold" />

        </LinearLayout>

请看我的使用xml更新。我不想默认显示全部内容,我只想在我的视图1中显示它。 - My God
5个回答

30
<TextView
                android:id="@+id/layone"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Previous Page"
                android:textColor="#000000"
                android:textSize="16dp"
                android:paddingLeft="10dp"
                android:layout_marginTop="10dp"
                android:visibility="gone" />

layone是一个TextView。
你的id写错了。

LinearLayout layone= (LinearLayout) view.findViewById(R.id.laytwo);// change id here

layone.setVisibility(View.VISIBLE);

应该可以完成工作。

或者像这样更改以显示TextView:

TextView layone= (TextView) view.findViewById(R.id.layone);

    layone.setVisibility(View.VISIBLE);

是的,没问题。我希望整个都不显示,包括文本视图。 - My God
那你为什么要用 LinearLayout 引用 TextView?这不应该起作用。 - Lazy Ninja
我知道,但你所提到的TextView的方式是错误的。请看我的修改。 - Lazy Ninja
实际上是视图2。现在我在TextView laytwo= (TextView) view.findViewById(R.id.laytwo);这一行遇到了空指针异常。 - My God
最终,我把它显示出来了。在 view.findViewById 中,视图为空。我先放置了视图,然后是我的代码。谢谢。 - My God
显示剩余2条评论

8
通过这种方式完成:
view = inflater.inflate(R.layout.entry_detail, container, false);
TextView tp1= (TextView) view.findViewById(R.id.tp1);
LinearLayout layone= (LinearLayout) view.findViewById(R.id.layone);
tp1.setVisibility(View.VISIBLE);
layone.setVisibility(View.VISIBLE);

如果您接受此答案,将有助于其他人解决问题并显示已解决。干杯! - Conspicuous Compiler

4
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/activity_register_header"
    android:minHeight="50dp"
    android:orientation="vertical"
    android:visibility="gone" />

试试这段代码。对我来说,这段代码可行。


1

使用Kotlin风格可以更简单地实现这一点(示例):

    isVisible = false

完整示例:
    if (some_data_array.details == null){
                holder.view.some_data_array.isVisible = false}

0

将以下属性添加到您的 XML 视图中以实现隐藏

android:visibility="gone"

将以下属性添加到您的 XML 视图中以实现显示

android:visibility="visible"

示例

 <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/futura_medium_bt"
            android:text="•Unlock all graphics"
            android:textAllCaps="true"
            android:visibility="gone"
            android:textColor="@color/black"
            android:textSize="@dimen/_12ssp" />

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