setVisibility也会隐藏附近的对象

时间:2012-07-29 22:46:11

标签: android

我在处理程序中隐藏了一个按钮(这是在我在应用程序的另一个状态下使其可见之后)。处理程序从正在运行的线程接收消息,然后更新GUI。

问题是附近(并非所有)按钮和文本视图也从屏幕上消失了。我使用相对布局。

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget54"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<Button
    android:id="@+id/btnFold"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:text="Fold" 
    android:visibility="invisible"/ >

<Button
    android:id="@+id/btnRaise"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/btnFold"
    android:text="Raise" 
    android:visibility="invisible"/>


<Button
    android:id="@+id/btnCall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/btnRaise"
    android:text="Call"
    android:visibility="invisible" />

<TextView
    android:id="@+id/txtFlopTurnRiver"
    android:layout_width="135dp"
    android:layout_height="50dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text=" " />


<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/btnCall"
    android:layout_toLeftOf="@+id/btnCall"
    android:text="Chip amount:" />

<TextView
    android:id="@+id/txtHand1"
    android:layout_width="73dp"
    android:layout_height="wrap_content"
    android:layout_above="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:text=" " />

<Button
    android:id="@+id/btnDeal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:text="@string/deal_deck"
    android:visibility="invisible" />

<Button
    android:id="@+id/btnRiver"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/btnDeal"
    android:text="River"
    android:visibility="invisible" />

<TextView
    android:id="@+id/txtHand2"
    android:layout_width="73dp"
    android:layout_height="wrap_content"
    android:layout_above="@+id/txtHand1"
    android:layout_toLeftOf="@+id/btnRaise"
    android:text=" " />

<TextView
    android:id="@+id/txtHand3"
    android:layout_width="73dp"
    android:layout_height="wrap_content"
    android:layout_alignRight="@+id/btnRaise"
    android:layout_centerVertical="true"
    android:text=" " />

<TextView
    android:id="@+id/txtHand8"
    android:layout_width="73dp"
    android:layout_height="wrap_content"
    android:layout_above="@+id/txtHand1"
    android:layout_alignLeft="@+id/btnRiver"
    android:text=" " />

<TextView
    android:id="@+id/txtHand6"
    android:layout_width="73dp"
    android:layout_height="21dp"
    android:layout_above="@+id/txtFlopTurnRiver"
    android:layout_alignLeft="@+id/txtHand8"
    android:layout_marginBottom="26dp"
    android:text=" " />

<TextView
    android:id="@+id/txtHand4"
    android:layout_width="73dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/txtHand6"
    android:layout_alignBottom="@+id/txtHand6"
    android:layout_toLeftOf="@+id/btnRaise"
    android:text=" " />

<TextView
    android:id="@+id/txtHand5"
    android:layout_width="73dp"
    android:layout_height="wrap_content"
    android:layout_above="@+id/txtHand4"
    android:layout_alignLeft="@+id/txtHand1"
    android:layout_marginBottom="14dp"
    android:text=" " />

<TextView
    android:id="@+id/txtHand7"
    android:layout_width="73dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/txtHand3"
    android:layout_alignBottom="@+id/txtHand3"
    android:layout_alignRight="@+id/btnRiver"
    android:layout_marginRight="26dp"
    android:text=" " />



<TextView
    android:id="@+id/txtChipAmount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_toLeftOf="@+id/btnCall"
    android:layout_toRightOf="@+id/txtHand1"
    android:text="103360" />

有谁知道可能导致问题的原因?

btnFold = (Button)findViewById(R.id.btnFold);
btnFold.setVisibility(View.GONE);

2 个答案:

答案 0 :(得分:3)

现在我看到了您的完整xml - 当您将View设置为GONE时,相对于它设置的视图(layout_toLeftOflayout_above)会被放入左上角(或者他们的其他约束条件放置它们,例如toLeftOf和父母对齐的视图现在将显示在屏幕的左下角(它没有任何内容toLeftOf并且位于底部如果您只想隐藏View.INVISIBLE而不是View,我建议设置View.GONE,除非您有具体原因?

答案 1 :(得分:1)

包装要隐藏的按钮
<LinearLayout 
 android:id="@+id/LLid" 
 android:layout_alignParentRight="true"
 android:layout_width="wrap_content"
....
>

</LinearLayout>

将所有layout_toLeftOf设为LinearLayout(LLid)

之后你定义一个可见性:转到你的按钮,并用setVisibility(VIEW.VISIBLE)显示它们