1

アプリケーションのボタンクリックで膨らむポップアップウィンドウを作成しようとしていますが、アダプタによって入力されたリストビューが表示されます。現在、DialogFragmentを使用していますが、問題なく動作します。ただし、ダイアログのサイズと理想的な位置を調整できるようにしたいと思います。

調査を行った後、PopupWindowを使用すると、ボックスのサイズと位置を調整できますが、ビュー内でフラグメントをインスタンス化することはできません。DialogFragmentは、フラグメントとリストビューを使用する場合にうまく機能しますが、私の知る限り、そのサイズと位置を制御することはできません。

動的ポップアップの作成で同様の状況や経験をした人はいますか?

4

1 に答える 1

2

DialogFragmentのサイズを変更するために、OnCreateViewメソッドを使用して次のことを行いました

注: MonoDroidのC#でのコード。生のAndroid用にJavaに簡単に翻訳

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    base.OnCreateView(inflater, container, savedInstanceState);

    View thisView = inflater.Inflate(Resource.Layout.NewContactDialog, container, false);

    thisView.Post(() =>
        {
            ViewGroup.LayoutParams lp = thisView.LayoutParameters;

            lp.Width = 500;

            thisView.LayoutParameters = lp;

            thisView.Invalidate();
        }

    );

    return thisView;
}

このコードは実験によるものです。私が決めたのは、中央に配置されたDialogFragment(デフォルトの動作)を使用し、背景を暗くしないことでした。DFのスタイルをオーバーライドして、既存のテーマに基づいて作成することができます

<style name="MyDialogFragment" parent="android:Theme.Holo.Dialog">
  <item name="android:windowIsFloating">true</item>
</style>

または、ゼロから完全にスタイリングします

<style name="MyDialogFragment">
  ... (set all items, check docs)
</style>

まず、上記のMyDialogFragmentスタイルを使用して、windowIsFloatingをfalseに設定し、効果を確認してください(SetStyleメンバーでテーマをこれに設定するだけです)。

独自のスタイリングとデフォルトのオーバーライドを行う必要があるスタイルとテーマのいくつかの良いリンク:

http://www.therealjoshua.com/2012/01/styling-android-with-defaults/

http://developer.android.com/guide/topics/ui/themes.html/

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml/

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml/

正直なところ、DialogFragmentsとPopupWindowsを操作するのは面倒ですが、これらは実際のGUIの問題を解決する特殊なビューなので、あきらめないでください。さらに情報が必要な場合は、以下のコメントで質問してください(これは答えではないことに気づきました。私はただ助けようとしています、b / c私は今このようなものに取り組んでいます)。

于 2012-12-11T21:27:45.037 に答える