簡體   English   中英

在Android中創建自定義對話框

[英]Creating a custom dialog in Android

我正在嘗試在Android中創建自定義對話框。 但無論我試圖做什么,我都無法改變對話框的寬度。 它只是保持不變。 以下是我將設置為對話框內容的視圖。

<RelativeLayout  
android:id="@+id/current_stats"
android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:visibility="visible">
<ImageView android:id="@+id/player_image" 
    android:src="@drawable/person"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"/>
<TextView   
    android:id="@+id/player_name"
    android:layout_below="@id/player_image"
    android:layout_centerHorizontal="true"
    android:text="Raja Ram"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
<ImageButton android:id="@+id/dialog_close"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:background="#00000000"
    android:src="@drawable/close_button_selector"/>
<ImageButton android:id="@+id/dialog_flip"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:background="#00000000"
    android:src="@drawable/rotate"/>
</RelativeLayout>

正如您所看到的,我在這個代碼示例中使用wrap_content。 我也嘗試了以下選項

1)在創建對話框時設置自定義樣式。

dialog = new Dialog(this,R.style.Theme_Dialog);

風格如下

<resources>
<style name="Theme" parent="android:Theme">
</style>
<style name="Theme.Dialog">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>
</resources>

2)像這樣在onCreateDialog()中設置視圖的參數

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.player_info, null, false);
ViewGroup.LayoutParams p = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
dialog.setContentView(v,p);

3)我還嘗試在onCreateDialog()方法中設置這樣的Window參數

WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width=WindowManager.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(params);

但再次沒有運氣。 有人可以幫我解決這個問題。 難道我做錯了什么?? 你也可以建議我如何設置對話窗口的x和y位置?

謝謝

        dialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar);

        dialog.setContentView(R.layout.custom_dialog);

         LayoutParams lp=dialog.getWindow().getAttributes();    
         lp.x=100;lp.y=100;lp.width=100;lp.height=200;lp.gravity=Gravity.TOP | Gravity.LEFT;
         lp.dimAmount=0;            
         lp.flags=LayoutParams.FLAG_LAYOUT_NO_LIMITS | LayoutParams.FLAG_NOT_TOUCH_MODAL;
    //   dialog.getWindow().setAttributes(lp);

         dialog.show();

這對我很有用....

您的問題是它占據了屏幕的整個寬度,還是您無法控制屏幕的占用量?

要使您的活動充當對話框,而不是完全充實,您應該將活動設置為在清單中具有對話框主題:

<activity android:theme="@android:style/Theme.Dialog">

對話框將與布局所需的一樣大。 如果您希望它更寬,則需要使您的布局更寬。 (調整圖像大小,添加填充等)。

我不知道如何定位對話框窗口..我認為它總是居中,但我可能錯了。

經過很長一段時間我才發現問題。 問題在於我使用相對布局的方式。 我想我沒有正確指定相對位置。 當我將其更改為線性布局時,它工作正常。 它並沒有耗盡整個屏幕,只是滿足了所需要的一切。

我可以使用getWindow()更改Dialog的寬度,高度和位置.setAttributes(params)

在yout自定義對話框類的onCreate()方法中執行下一步

@Override
    protected void onCreate(Bundle savedInstanceState) {
getWindow().setLayout(x, y);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM