AlertDialogのスタイルについて

375 views
Skip to first unread message

長生堂

unread,
Aug 7, 2013, 4:06:07 AM8/7/13
to android-g...@googlegroups.com
こんにちは。
 
現在、Androidアプリを開発しています。
基礎が良く分かっていないのかもしれませんが、ご教示ください。
 
今、IDEにデフォルト搭載されているエミュレータで、
Android2.2 3.2 QVGA(ADP2) (320 x 480:mdpi)
を使って、レイアウト確認していました。
 
そこで、AlertDialogを使っていたのですが、
上記のエミュレータと確認したものと、
Android4.2.2 Nexus 7 (7.27, 800 x 1280:tvdpi)
のエミュレータで確認したものでは、まるでレイアウトが変わってしまいます。
 
①Android2.2のレイアウトのダイアログをそのまま表示したいのですが、
どのようにすれば良いのでしょうか?
 
 
②また、SDKは下記の通り指定していましたが、
コメントアウトすると、Nexus Sのエミュレータでは、拡大して表示されました。
  <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
 
一応、古いAndroid端末でも動き、対応端末によって画面が大きくなっても拡大されて、
上記Android2.2のレイアウトの通り、表示され、動けば良いと思っているのですが、
コメントアウトしてもこれから新規に発売される端末も問題なく動くのでしょうか?
 
(どこかのサイトでSDKバージョンは指定しなければデフォルト1.0のSDKがターゲットになると読みました)
 
③また、動作確認のエミュレータは皆さんどれを中心にかくにんされているのでしょうか?
 
お聞かせ頂ければ幸いです。

Hirokazu Fukami

unread,
Aug 7, 2013, 5:05:40 AM8/7/13
to android-g...@googlegroups.com
こんにちはfkmです。

ダイアログ(に限らずアプリ全体ですが)のスタイルは、
res/values/styles.xml
で定義されています。
そして、Eclipseでプロジェクトを作った場合、v11用(SDK version 11以上)と
v14用のstyles.xmlが用意されます。

なので、Android 4.x以上でもAndroid 2.xのような見た目にしたい場合は、
values-v14内のstyles.xmlをvalues内のstyles.xmlと同じにしてあげればいいはずです。

2番ですが
minSDKVersion : インストールできる最小のバージョン
8なので、Android 2.2以上の端末でインストール可能 を表します
targetSDKVersion : このバージョンで動くことをテストしてるよ
テストしているので、Styleなどは新しいバージョンのものが使用されます

3番ですが、fkmは基本的に実機を使っています。
どうしてもAndroid 2.2で表示が崩れる といった場合にエミュレータを使っています。




2013/8/7 長生堂 <funakosh...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>



--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://www.fkmsoft.jp
email: f...@fkmsoft.jp

長生堂

unread,
Aug 8, 2013, 12:36:13 AM8/8/13
to android-g...@googlegroups.com
ありがとうございます。
 
IDEが違うのでしょうか?android.jarの中に「res/values/」のパスもありませんでした。
コントロールごとにxml化しているようですが、APILevelごとに分かれているようには見受けられませんでした。
 
WEBから探してstyles.xmlを生成しましたが、
恐らくSDKのバージョンによる差異だと思うのですが、SDK間で構成が変わってしまっているのかもしれませんが、
コンパイルエラーばかりでした。
 

    <style name="AlertDialog">
    </style>
このように空を持たせる事で、新しいVersion
のStyleはある程度殺せるようですが、Dialogの角が丸みが無いなど、
完全には無効化できませんでした。
 
どこかにAndroid2.2のStyleはありませんでしょうか?
 
 
 
 
2013年8月7日水曜日 18時05分40秒 UTC+9 fkm:
> このグループから退会し、メールの受信を停止するには、android-group-japan+unsubscribe@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。

宮山

unread,
Aug 8, 2013, 2:40:27 AM8/8/13
to android-g...@googlegroups.com
こんにちは、宮山です。

AlertDialogのStyleですが、3.0以降でデフォルトのスタイルが変更になり、2.2の時のような画面サイズと
同じ幅にはならなくなっています。

参考:

ここにあるようにサイズを指定すればいいのですが気をつけることとして、ローテーションに対応している場合
端末をローテーションしても、ローテーション前のサイズままなので、特に横から縦の回転した時は
AlertDialogが画面からはみ出してしまうなど残念なコトになってしまいます。
(2.2までですと、標準のalertdialogはローテーション時に画面サイズに合わせて再描画してくれますが)

自分がこの実装を入れた時は画面ローテション時のダイアログの再表示が分からず
苦肉の策でローテーション時にはAlertDialogを閉じるようにしました。

参考になれば幸いです。

長生堂

unread,
Aug 8, 2013, 6:34:22 AM8/8/13
to android-g...@googlegroups.com
宮山さま
 
大変貴重なお話ありがとうございます。
APIの2.2と3.0では、スタイルを取りに行く所も変わっているのですね。
 
 
 
 
2013年8月8日木曜日 15時40分27秒 UTC+9 宮山:
Reply all
Reply to author
Forward
0 new messages