我在处理程序中隐藏了一个按钮(这是在我在应用程序的另一个状态下使其可见之后)。处理程序从正在运行的线程接收消息,然后更新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);
答案 0 :(得分:3)
现在我看到了您的完整xml - 当您将View
设置为GONE
时,相对于它设置的视图(layout_toLeftOf
,layout_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)显示它们