2012-11-08 12 views
9

私のダイアログ私はperfecly私が望むどのようにこのショーを短いテキストを持っていながら、ScrollView内部TextViewを持っていますが、もしでテキストは非常に大きい私のダイアログは、完全な画面を取ると、ダイアログと画面の端の間の最小限の余裕を持っています。アンドロイド:私はアンドロイド<code>android.app.Dialog</code>を使用するための(ボタンや背景用)カスタムダイアログを作成ダイアログ最小マージン

私の問題は、ダイアログが必要以上に大きくならないようにしたいのですが、これで修正サイズを設定できません。

Here is how this look today.....I what a margin like this

How my Dialog is now.I want a margin like this.


GameDialog.java

public class GameDialog extends Dialog { 

    public GameDialog(Context ct, int titleID, int messageID) { 
     super(ct, R.style.dialog_style); 
     this.setContentView(R.layout.dialog_layout); 

    } 
    // This exist more code but this has noting with the layout to do,only set the text and show the button that exist since the XML file. 

} 

R.style.dialog_style

<style name="dialog_style" parent="@android:style/Theme.Dialog"> 
    <item name="android:windowBackground">?button_image</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:textColor">#FF000000</item> 
    <item name="android:textSize">20sp</item> 
</style> 

R.layout.dialog_layout

<?xml version="1.0" encoding="utf-8"?> 


<!-- Dialog layout that show title and a textarea, and under this allow a row of button that is center layout. --> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="14px" 
        android:layout_marginRight="14px"> 


     <TextView 
      android:layout_gravity="center_vertical"  
      android:id="@+id/text_title" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
     </TextView> 

    </LinearLayout> 

    <LinearLayout android:orientation="vertical"  
        android:layout_width="fill_parent" 
        android:layout_height="0px" 
        android:layout_weight="1" 
        android:layout_marginLeft="14px" 
        android:layout_marginRight="14px"> 

     <ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
     > 

      <TextView android:id="@+id/text_main" 
         android:padding="5px" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
      > 
      </TextView> 

     </ScrollView> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout_button" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="horizontal"> 
      <!-- this will be show while need to show a button --> 
     <ImageView 
      style="?icon_size.button" 
      android:visibility="gone"/> 
     <ImageView 
      style="?icon_size.button" 
      android:visibility="gone"/> 
     <ImageView 
      style="?icon_size.button" 
      android:visibility="gone"/> 
     <ImageView 
      style="?icon_size.button" 
      android:visibility="gone"/> 
     <ImageView 
      style="?icon_size.button" 
      android:visibility="gone"/> 
    </LinearLayout> 
</LinearLayout> 
+0

申し訳ありませんが、私は最初の答えであなたの質問を誤解しました。 –

+0

問題ありませんが、あなたにいくつかの他のIDEがありますか? –

+0

答えが更新されました。これは非常に良い取り組んでいる –

答えて

11

フレームワークは実際には背景画像自体でこれを行います。言い換えれば、あなたは、フレームワークのために定義されたテーマを見ている場合は、そのwindowBackground属性、すなわち、単にクリアカラーです:

<item name="android:windowBackground">@android:color/transparent</item> 

そしてルートレイアウト項目の上に置かれた背景画像は、9-パッチにはすべての面が埋め込まれています(つまり、余分なスペースが画像に組み込まれているため、画像が画面いっぱいに広がってもエッジの周りを見ることができます)。私が何を意味するのかを知るために、AOSPソースのパネルの1つを見てください(link)。

だからあなたのソリューションのために、私は2つのことをお勧めします:私は

  • 前述したように

    1. windowBackgroundであなたのカスタムスタイルを変更し、固有の透明マージン
    ことが含まれるように、カスタムの背景画像を更新

    手順2の場合、画像が現在9パッチである場合は、Googleが行ったのと同じことをします。あなたがXMLであなたのイメージを作成した場合は、パディングと別の内部の目に見える四角形を埋め込むために、次のサンプルのような<layer-list>を使用することができます。

    <?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
        <item> 
         <shape android:shape="rectangle" > 
          <solid android:color="@android:color/transparent" /> 
          <padding 
           android:bottom="10dp" 
           android:left="10dp" 
           android:right="10dp" 
           android:top="10dp" /> 
         </shape> 
        </item> 
        <!-- This shape will be inset by the padding set above --> 
        <item> 
         <shape android:shape="rectangle" > 
          <solid android:color="#262626" /> 
         </shape> 
        </item> 
    </layer-list> 
    

    パディングが、この場合のコンテンツに転送されませんので、あなたにもなります画像レイアウトとコンテンツ境界を一致させるために、ルートレイアウト項目にパディングを追加する必要があります。

  • +0

    、私はアンドロイドベースのコードを調べますが、すべてのデータを持っており、完全な* .javaファイルを表示し、作業のページを見つけるのは難しい、このいくつかの時間を見つけるために知っています。 –

    +0

    は、我々は、実行時にダイアログのデフォルトパディング値を得ることができますか?それは階層ビューアを使用した:( –

    +0

    ここで私は見つけることができない、私は、「ダイアログのデフォルトのパディングが」自分自身とその親contentView alertdialogから来ていることが分かったパディング値は、すべてのハードコード:http://goo.gl/0mfHkm HTTP ://goo.gl/mgBsDE –

    0

    ジャストトップレベルのViewGroup(あなたのLinearLayout)にレイアウト余白を追加します。

    また、多くの不要なネストされたレイアウトがあり、ピクセル単位を使用しないでください。あなたのdialog_layout.xmlは、次のようになります。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_margin="14dp" > 
    
        <TextView 
         android:id="@+id/text_title" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:paddingRight="14dp" 
         android:paddingLeft="14dp" /> 
    
        <ScrollView 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:paddingRight="14dp" 
         android:paddingLeft="14dp"> 
    
         <TextView 
          android:id="@+id/text_main" 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" /> 
    
        </ScrollView> 
    
        <LinearLayout 
         android:id="@+id/layout_button" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:gravity="center" 
         android:orientation="horizontal"> 
          <!-- this will be show while need to show a button --> 
         <ImageView 
          style="?icon_size.button" 
          android:visibility="gone"/> 
         <ImageView 
          style="?icon_size.button" 
          android:visibility="gone"/> 
         <ImageView 
          style="?icon_size.button" 
          android:visibility="gone"/> 
         <ImageView 
          style="?icon_size.button" 
          android:visibility="gone"/> 
         <ImageView 
          style="?icon_size.button" 
          android:visibility="gone"/> 
        </LinearLayout> 
    </LinearLayout> 
    
    関連する問題