0

レイアウトを切り替えたい。ImageButton マップを押すとマップ ビューに移動し、ImageButton gridview を押すと GridView に移動します。

注: マップは別のレイアウトです。グリッドは別のレイアウトにあり、グリッドビューの画像は別のレイアウトから呼び出されます

ここに画像の説明を入力

ここに画像の説明を入力

4

4 に答える 4

1

フラグメントを調べる

ビューごとにフラグメントを作成します。次に、親レイアウト ビューに何を使用しているかに応じて、特定のビューが最初に表示されるときに、適切なフラグメントを親レイアウトに追加できます。

ビューを切り替えるときは、現在のビュー (非表示にするビュー) をフラグメント バックスタックに配置します ( FragmentManagerも確認する必要があります)。次に、再度切り替えるときに、既存のフラグメントをスタックからポップして、現在のフラグメントをスタックに配置できます。

編集: 開発している API (フラグメントは API 13 で導入されました) によっては、プロジェクトに互換性ライブラリを追加する必要がある場合があります。

于 2012-08-22T02:41:33.970 に答える
0

メイン xml にホルダー ビュー (例: RelativeLayout) を作成します。次に、グリッドビューとマップビュー用に 2 つの個別の XML ファイルを作成します。

適切なボタンを押すと、正しいビューを膨らませてホルダー ビューにアタッチできます。効率を高めるために、ViewHolder パラダイムを使用して、既に膨張したビューをキャッシュすることもできます。

お役に立てれば...

以下の質問に基づいて編集

サンプル コード (現在の場所で作業中のバージョンにアクセスできないため、その場で入力します)。

main.xml が含まれています

    <RelativeLayout android:id="@+id/x".../>

image.xml と map.xml もあります。OnClick で、次のことを試してください。

    ViewGroup myLayout = view.findViewById(R.id.x);
    View myView;
    if (clickedButton == imageButton) {
        myView = getInflater().inflate(R.layout.image, myLayout, false);
    } else if (clickedButton == mapButton) {
        myView = getInflater().inflate(R.layout.map, myLayout, false);
    }
    myLayout.addView(myView);
于 2012-08-22T04:21:11.797 に答える
0

クリック ハンドラーから呼び出すかsetContentView(int layoutId)、そのアクティビティのマップ レイアウトを使用して新しいアクティビティを開始します。

于 2012-08-22T01:53:28.473 に答える
0

これを行う簡単な方法は、複数の活動を行う理由がない限り、2 つの活動を行うことです。GridViewActivity
MapViewActivity GridViewActivity
の画像をクリックすると、MapViewActivity アクティビティが開始され、その逆も同様です。
2 つのレイアウトに imagebutton があることを確認してください (もちろん ID は異なる必要があります)。

于 2012-08-22T02:25:49.750 に答える