2010-12-01 8 views
6

私はAndroidのダイアログについて学んでいますが、その高さを決めるのは混乱しています。私はこのXMLを私のダイアログレイアウトに使用しています。 。 。Androidのカスタムダイアログの高さ

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <Button 
    android:id="@+id/AButton" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_marginLeft="10px" 
    android:text="Click Me to Dismiss" 
    /> 
    <TextView android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_toLeftOf="@id/AButton" 
    android:text="Click this button: " 
    /> 
    <ImageView 
    android:id="@+id/an_image" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="42px" 
    android:src="@drawable/screw50"> 
    </ImageView>  
    /> 

このダイアログが表示されます。 。 。

alt text

しかしDeveloper.Android.com氏は述べています...その

"ビューがその内容(プラスパディング)を囲むのに十分なだけ大きいことを望んでいることを意味し WRAP_CONTENT、"

...なぜダイアログはそれほど高い必要がありますか?私は

android:layout_height="200px" 

とレイアウトの高さを交換する場合

それが適切に短いダイアログになりますが、私は(それは良い習慣ではありません)、明示的なピクセルの高さを使用する必要はありません。どのようにしてダイアログの内容を十分大きくするには?

答えて

7

TextViewの高さがfill_parentになっています。これは、RelativeLayoutとwrap_contentの高さを組み合わせて、その高さを最大サイズに押し込む可能性はありますか? TextViewの高さをwrap_contentに変更するとどうなりますか?

を追加すると、the Android SDKは、RelativeLayoutの子は、align_parent_bottomなどのレイアウトに依存することはできないと言います。私はfill_parentが依存関係であると仮定し、レイアウトを破っています。

+0

こんにちは私の質問はopsの問題でした。私は周りをブラウジングし、このポストに着いた。実際には、できるだけ多くのスペースを取るダイアログが欲しい。これは正しいレイアウトですか? – Naveed

+0

この例では、RelativeLayoutをfill_parentに設定すると思われます。 – AndrewKS

1

奇妙です。私は使用しています<LinearLayout/>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:orientation="vertical" 
        android:background="@android:color/white"> 
<TextView android:id="@+id/message" 
       android:padding="5dp" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="10dp"/> 
    ... 
    </LinearLayout> 

それは私のコンテンツをうまくラップします。

+1

はい、私はLinearLayoutにこの問題がないことに同意します。しかし、私はRelativeLayoutを使いたいと思っていました。 RelativeLayoutにいくつかの制限事項がありますか? (私はAndroid 2.2を使用していることを言及する必要があり、この問題はエミュレーションと実際の電話で発生しています) –

+0

LinearLayout内でRelativeLayoutを使用しないのはなぜですか?そして、私は何も認識していません:( –

+1

"LinearLayout内でRelativeLayoutを使用しないのはなぜですか?"私はそれを試すことができますが、ハック、違反のように思えます。正しく動作するようにする方法が必要です。 –

1

私は過去2日間同じ問題に取り組んできました。 Finalyは、ダイアログのスタイルでいくつかの属性を使って正しく動作します。ここ

は、私が使用しているスタイルです:

<style name="SearchFieldSetterDialog" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:gravity">bottom</item> 
</style> 

キーattriubutesは次のとおりです。

<item name="android:windowIsFloating">true</item> 
    <item name="android:windowNoTitle">true</item> 

最初のものは、私が推測する、ダイアログの周りにフレームを配置するウィンドウマネージャに言う必要があります と、2番目はダイアログタイトル用に予約されたスペースを取り除くためです。このスタイルと、次のレイアウトで

は、私は最終的にそれが働いていた:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

... 

</LinearLayout> 

THS溶液と私の問題はtrueとearlyerプラットフォームとしてsetted android:windowIsFloating attriubuteで、その後3.0は、私は方法を見つけることができないということですlayout_widthfill_parent

と設定されていても、画面を埋めるためにダイアログをwitdhにするには、これは誰かを助けるでしょう...私の悪い英語のために叫ぶ

+0

ダイアログのスタイル属性はどこですか? –

+0

コンストラクタ内: http://developer.android.com/reference/android/app /Dialog.html#Dialog(android.content.Context、int) –

+0

ああ、確かに忘れてしまった!ありがとう –

関連する問題