2011-05-31 56 views
17

對此類問題也有類似的問題,涉及對話活動以及如何使這些全屏,但我有一個稍微不同的問題。我想要這些對話框來包裝活動內容。包裝內容的對話活動

現在,「對話活動」所有繼承以下主題,在清單活動定義的

<style name="tabDialog" parent="@android:Theme.Dialog"> 
    <item name="android:windowBackground">@drawable/panel_background</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">false</item> 
</style> 

實施例,

<activity android:name=".TabSettingsActivity" 
    android:theme="@style/tabDialog" android:excludeFromRecents="true" 
    android:configChanges="keyboardHidden" /> 

內容視圖父視圖的定義如下,

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

並且佈局中的所有子視圖還爲這兩個維度指定wrap_content秒。我也嘗試使用RelativeLayout作爲父項,但同樣相同。內容畫面已經在活動的onCreate設置

後,我做這個

getWindow().setLayout(LayoutParams.WRAP_CONTENT, 
       LayoutParams.WRAP_CONTENT); 

這些東西似乎都不竟然做出任何差別。問題主要與對話框高度有關,比對需要的高度大50%左右。對話的一半就是死亡空間。將根視圖尺寸設置爲硬編碼的dp單位解決了這個問題,但這似乎是一種解決方法而不是解決方案。

任何想法的人?

在此先感謝。

乾杯

+1

你解決了這個問題嗎?如果是這樣,請讓我知道。 – Christian 2011-08-02 15:03:34

+0

Hy,你是否設法找到了解決辦法?謝謝 – Paul 2013-03-15 08:25:28

+0

您是否將'Dialogue'作爲'Activity'使用,或者您使用'Activity'作爲'Dialogue'?爲什麼? – Xcihnegn 2015-02-24 08:57:31

回答

1

嘗試設置layout_margin。如果失敗了,那麼定期的活動填充和邊距可能會受到責備。

1

我使用的是DialogFragment和它工作得很好,如果你使用setStyle

public class MyDialogFragment extends DialogFragment { 
     public MyDialogFragment() { 
      setStyle(STYLE_NO_FRAME, android.R.style.Theme_Dialog); 
     } 
    } 
3

嘗試了這一點。這解決了我的問題。

<style name="NewDialog" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowFrame">@null</item> 
     <item name="android:windowBackground">@android:color/transparent</item> 
     <item name="android:windowIsFloating">true</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowTitleStyle">@null</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
     <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
     <item name="android:backgroundDimEnabled">false</item> 
     <item name="android:background">@android:color/transparent</item> 
    </style> 
+0

對我來說不起作用 – 2015-12-23 05:19:01

+0

大部分代碼都不會執行任何操作(=>已經在父級樣式中預定義)。你唯一要改變的是將背景顏色設置爲透明,並刪除標題樣式(這似乎沒有任何影響) – Aenadon 2016-11-02 08:55:59

2

您正在使用的父視圖「dialog_rounded_background」中的對話框背景是問題,因爲它可能與屏幕尺寸一樣大。請檢查。

1

使用相同的自定義對話框。

只需設置xml佈局以填寫父母layout_widthfill_parent即可。

1

只要你能得到Android設備屏幕的寬度和高度:

//Define the size of layout 
    Display display = getWindowManager().getDefaultDisplay(); 
    int widths = display.getWidth(); 
    int heights = display.getHeight(); 

然後你就可以指定基於這些值的寬度或高度!正如:

getWindow().setLayout(widths , 
         heights); 

希望這會有所幫助:) ,,,

1

使用Theme.AppCompat.Light.Dialog.Alert主題,而不是..它應包住對話框高度來包裝內容。