3

私はrelativelayoutの中にrelativelayoutを持っていて、それはすべてインクルードの中にあります。外側の relativelayout には、画像である android:background があります。
インナーは別のイメージがありますが、同じです。
それはすべて目に見えない。 可視性の切り替えを担当するボタンがあります。

見えるようになると、内側の画像は表示されますが、外側の画像は表示されません。
しかし、クリックして非表示にし、もう一度クリックして表示すると、外側の画像も表示されます。

関連するxmlは次のとおりです。

<RelativeLayout
    android:id="@+id/display_prefs_dialog_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:visibility="invisible" >

    <include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="45dp"
        android:layout_marginRight="50dp"
        layout="@layout/display_prefs_dialog" >
    </include>
</RelativeLayout>

そして、インクルードの中に:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/display_prefs_dialog"
    android:layout_width="327dp"
    android:layout_height="218dp"
    android:background="@drawable/display_win" >

    <RelativeLayout
        android:id="@+id/display_letters_bg"
        android:layout_width="262dp"
        android:layout_height="44dp"
        android:layout_marginLeft="32dp"
        android:layout_marginTop="38dp"
        android:background="@drawable/display_letter_frame" >

ジャワコード:

final ImageButton btnDisplay = (ImageButton) findViewById(R.id.btnDisplay);         
        final RelativeLayout prefsInnerDialog = (RelativeLayout) findViewById(R.id.display_prefs_dialog);       
        final RelativeLayout prefsDialog = (RelativeLayout) findViewById(R.id.display_prefs_dialog_layout);


btnDisplay.setOnClickListener(new Button.OnClickListener() 
        {
            public void onClick(View v)
            {                               
                int visibility = prefsDialog.getVisibility();
                if (visibility == View.VISIBLE) 
                {
                    prefsDialog.setVisibility(View.INVISIBLE);
                } 
                else 
                {
                    prefsDialog.setVisibility(View.VISIBLE);
                }
            }
        });
4

1 に答える 1

0

私は今日、あなたと同じ種類の要件を抱えており、これと同様のことを行っており、それが私のために働いています. あなたのために同じサンプルコードを投稿すると、あなたに役立つかもしれません..!

Java ファイル : Main.java

public class Main extends Activity {
    RelativeLayout prefsInnerDialog, prefsDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        prefsInnerDialog = (RelativeLayout) findViewById(R.id.display_prefs_dialog);
        prefsDialog = (RelativeLayout) findViewById(R.id.display_prefs_dialog_layout);
    }
    public void toggleIt(View v) {
        int visibility = prefsDialog.getVisibility();
        if (visibility == View.VISIBLE) {
            prefsDialog.setVisibility(View.INVISIBLE);
        } else {
            prefsDialog.setVisibility(View.VISIBLE);
        }
    }
}

最初の XML : main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical" android:id="@+id/linearLayout1">
    <Button android:layout_width="wrap_content" android:text="Button"
        android:id="@+id/button1" android:layout_height="wrap_content"
        android:onClick="toggleIt"></Button>
    <RelativeLayout android:id="@+id/display_prefs_dialog_layout"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:visibility="invisible">
        <include android:layout_width="fill_parent"
            android:layout_height="fill_parent" layout="@layout/mainsecond">
        </include>
    </RelativeLayout>
</LinearLayout>

2 番目の XML : mainsecond.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/display_prefs_dialog" android:layout_width="320dp"
    android:layout_height="480dp" android:background="@drawable/mainbg">
    <RelativeLayout android:id="@+id/display_letters_bg"
        android:layout_centerInParent="true"
        android:layout_width="250dp" android:layout_height="100dp"
        android:background="@drawable/databg">
    </RelativeLayout>
</RelativeLayout>

あなたのコードを見ると、Javaコードには何も問題がないように感じます。RelativeLayoutの使用法が悪いという理由だけで問題があります。

于 2012-05-19T06:02:47.193 に答える