2012年1月31日火曜日

android.app.Dialogを任意のサイズに設定する。 FILL_PARENT, WRAP_CONTENTもできるよ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
さんざんハマったので。

こうだ


こうです。
dialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);

android.app.DialogをnewしてレイアウトぶちこんだあとgetWindow()してsetLayoutでサイズ指定する感じです。
この時FILL_PARENT, WRAP_CONTENTなども使えます。

import android.widget.LinearLayout.LayoutParams;

Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.hoge);
dialog.setTitle(R.string.moge);
dialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);




Dialogの横だけFILL_PARENTにする


まぁこうですね。

import android.widget.LinearLayout.LayoutParams;

Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.hoge);
dialog.setTitle(R.string.moge);
dialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);




Dialogを300x300にしてみる


まぁこうですね。

import android.widget.LinearLayout.LayoutParams;

Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.hoge);
dialog.setTitle(R.string.moge);
dialog.getWindow().setLayout(300, 300);




使ったレイアウトXML


は、これ。android:textにリテラルぶっこむとLint先生に怒られるので良い子の皆様は必ずvaluesで定義してstringを下さい。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="10dp" >
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:text="(さよならだ)"
        android:textColor="#FFF" />
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <Button 
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="OK"
        />    
    </LinearLayout>
</LinearLayout>



2 件のコメント:

  1. 以前のブログの
    http://blog.livedoor.jp/sylc/archives/1470690.html#comments
    を拝見してこちらに書き込みをしました。
    違う記事についての質問で恐縮ですが、どうしても分からないのでお願い致します。

    マルチタッチ、画像のズームについて非常に参考になったのですが、新規にImageViewをaddViewして色々思考錯誤してみたのですが、複数のImageViewを同期をとりながら操作ができませんでした。
    各ImageViewのMatrixをArrayListに保持してやってみたのですが、指を少し右にスクロールさせただけで画面から消えていくほど反応が良いです。

    複数のImageViewの同時移動・同時ズームに心当たりがありましたら、ご教授願いたいです。
    宜しくお願い致します。

    返信削除
  2. ありがとうございます。とっても助かりました。
    ちなみに僕はタイトルバーも消したかったので、

    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

    としましたー。

    返信削除