5

問題を理解するには、次の画像をご覧ください。

ここに画像の説明を入力

ご覧のとおりRelativeLayout、カスタムを保持するViewと がありLinearLayoutます。
それらの間に、 に設定された別Viewのもあります。ここで、 を押すと、そのビューの可視性を に変更し、 を再配置して、3 番目のビューがカスタムとの間になるようにします。別のボタンを押すと、3 番目のビューをもう一度 GONE にしたいと思います。どうすればそれを達成できますか?VisibilityGONEButtonGONEVISIBLERelativeLayoutViewViewLinearLayout

ここに私のXMLがあります:

<view
    android:id="@+id/CanvasView"
    android:layout_width="200dp"
    android:layout_height="40dp"
    android:layout_above="@+id/HorizontalScrollView"
    android:layout_centerHorizontal="true"
    android:layout_margin="0dp"
    android:layout_marginBottom="0dp"
    android:layout_marginTop="0dp"
    class="com.example.CanvasView"
    android:orientation="vertical" />

<HorizontalScrollView
    android:id="@+id/HorizontalScrollView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/linearLayout2"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:visibility="gone" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:orientation="horizontal" >

    //SOME BUTTONS HERE
    </LinearLayout>

</HorizontalScrollView>

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_marginTop="5dp" >

    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:layout_weight="0.4"
        android:maxWidth="200dp"
        android:text="Clear"
        android:textColor="@android:color/white"
        android:textSize="20sp" />

    <Button
        android:id="@+id/settingsButton"
        android:layout_width="44dp"
        android:layout_height="44dp"
        android:layout_gravity="center_vertical|center_horizontal"
        android:background="@drawable/settings_button_selector" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:layout_weight="0.4"
        android:enabled="false"
        android:maxWidth="200dp"
        android:text="Recognize"
        android:textColor="@android:color/white"
        android:textSize="20sp" />

</LinearLayout>

OnClick() メソッドで 3 番目のビューの setVisibility のみを設定すると、LinearLayout の上に表示され、カスタム ビューにオーバーレイされます (以前に試しました)。つまり、RelativeLayout を上に移動しません。

4

2 に答える 2

12
findViewById(R.id.button1).setOnClickListener(new OnClickListener(){
     public void onClick(View v) {
         findViewById(R.id.hiddenview).setVisibility(View.GONE);
         findViewById(R.id.relativelayout).invalidate();
     }
});
findViewById(R.id.button2).setOnClickListener(new OnClickListener(){
     public void onClick(View v) {
         findViewById(R.id.hiddenview).setVisibility(View.VISIBLE);
         findViewById(R.id.relativelayout).invalidate();
     }
});
于 2013-07-01T07:07:29.247 に答える
-1

アクティビティで、そのビューonClick()のインスタンスを取得して、2 つのビューの間に再表示されるようにします。GONEView.VISIBLE

 viewName.setVisibility(View.VISIBLE);

このため、間VIEWにあるものがxmlにすでに存在している必要がありますが、それはGONEデフォルトです!

于 2013-07-01T07:05:28.360 に答える