導航:首頁 > 操作系統 > android對話框寬度

android對話框寬度

發布時間:2023-01-12 10:49:51

A. android 如何自定義對話框大小

java">WindowManagerm=getWindowManager();
Displayd=m.getDefaultDisplay();//為獲取屏幕寬、高

LayoutParamsp=getWindow().getAttributes();//獲取對話框當前的參數值

p.height=(int)(d.getHeight()*0.6);//高度設置為屏幕的0.6

p.width=(int)(d.getWidth()*0.95);//寬度設置為屏幕的0.95

getWindow().setAttributes(p);//設置生效

B. 怎麼設置dialog的寬和高度

1. 如果您是直接從資源值轉換: int width = getResources().getDimensionPixelSize(R.dimen.popup_width);
int height = getResources().getDimensionPixelSize(R.dimen.popup_height);
getDialog().getWindow().setLayout(width, height);

然後在你的布局中指定match_parent的對話框: android:layout_width="match_parent"
android:layout_height="match_parent"

你只需要擔心一個地方。它並不完美,但至少它適用於有一個RelativeLayout作為你的對話框的布局文件的根目錄。

2. 我有一個固定大小的定義在XML主要布局(LinearLayout中在我的情況)以下內容:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minWidth="1000dp"
android:minHeight="450dp"

3. 你可以在下面的代碼從Java布局設置寬度和高度。 final AlertDialog alertDialog = alertDialogBuilder.create();
final WindowManager.LayoutParams WMLP = alertDialog.getWindow().getAttributes();

WMLP.gravity = Gravity.TOP;
WMLP.y = mActionBarHeight;
WMLP.x = getResources().getDimensionPixelSize(R.dimen.unknown_image_width);
alertDialog.getWindow().setAttributes(WMLP);

alertDialog.show();

4. 在我的情況下工作的唯一的事情是該解決方案在這里指出:
從阿迪爾博客文章片段: @Override
public void onStart()
{
super.onStart();

// safety check
if (getDialog() == null)
return;

int dialogWidth = ... // specify a value here
int dialogHeight = ... // specify a value here

getDialog().getWindow().setLayout(dialogWidth, dialogHeight);

// ... other stuff you want to do in your onStart() method
}

5. 我固定它設置根布局 int width = activity.getResources().getDisplayMetrics().widthPixels;
int height = activity.getResources().getDisplayMetrics().heightPixels;
content.setLayoutParams(new LinearLayout.LayoutParams(width, height));

C. 如何設置對話框的寬度和高度

AlertDialog.Builder dialog = new AlertDialog.Builder(this).setTitle(
"title").setIcon(android.R.drawable.ic_dialog_alert).setMessage(
"message").setPositiveButton("yes", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {

}
}).setNegativeButton("no",
new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
}).setCancelable(false);

/* 方法1:
* 將對話框的大小按屏幕大小的百分比設置
*/
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); // 獲取屏幕寬、高用
WindowManager.LayoutParams p = getWindow().getAttributes(); // 獲取對話框當前的參數值
p.height = (int) (d.getHeight() * 0.5); // 高度設置為屏幕的0.5
p.width = (int) (d.getWidth() * 0.8); // 寬度設置為屏幕的0.8
dialog.show().getWindow().setAttributes(p);

/* 方法2:
* 獲取對話框的窗口對象及參數對象以修改對話框的布局設置,
* 可以直接調用getWindow(),表示獲得這個Activity的Window
* 對象,這樣這可以以同樣的方式改變這個Activity的屬性.
*/
Window dialogWindow = dialog.show().getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
dialogWindow.setGravity(CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);

/*
* lp.x與lp.y表示相對於原始位置的偏移.
* 當參數值包含Gravity.LEFT時,對話框出現在左邊,所以lp.x就表示相對左邊的偏移,負值忽略.
* 當參數值包含Gravity.RIGHT時,對話框出現在右邊,所以lp.x就表示相對右邊的偏移,負值忽略.
* 當參數值包含Gravity.TOP時,對話框出現在上邊,所以lp.y就表示相對上邊的偏移,負值忽略.
* 當參數值包含Gravity.BOTTOM時,對話框出現在下邊,所以lp.y就表示相對下邊的偏移,負值忽略.
* 當參數值包含Gravity.CENTER_HORIZONTAL時
* ,對話框水平居中,所以lp.x就表示在水平居中的位置移動lp.x像素,正值向右移動,負值向左移動.
* 當參數值包含Gravity.CENTER_VERTICAL時
* ,對話框垂直居中,所以lp.y就表示在垂直居中的位置移動lp.y像素,正值向右移動,負值向左移動.
* gravity的默認值為Gravity.CENTER,即Gravity.CENTER_HORIZONTAL |
* Gravity.CENTER_VERTICAL.
*
* 本來setGravity的參數值為Gravity.LEFT | Gravity.TOP時對話框應出現在程序的左上角,但在
* 我手機上測試時發現距左邊與上邊都有一小段距離,而且垂直坐標把程序標題欄也計算在內了,
* Gravity.LEFT, Gravity.TOP, Gravity.BOTTOM與Gravity.RIGHT都是如此,據邊界有一小段距離
*/
lp.x = 100; // 新位置X坐標
lp.y = 100; // 新位置Y坐標
lp.width = 300; // 寬度
lp.height = 300; // 高度
lp.alpha = 0.7f; // 透明度

// 當Window的Attributes改變時系統會調用此函數,可以直接調用以應用上面對窗口參數的更改,也可以用setAttributes
// dialog.onWindowAttributesChanged(lp);
dialogWindow.setAttributes(lp);

D. 在android開發中,如何控制dialog 的大小 和 圖片的大小

1、控制大小和位置
/*
*
獲取對話框的窗口對象及參數對象以修改對話框的布局設置,
*
可以直接調用getWindow(),表示獲得這個Activity的Window
*
對象,這樣這可以以同樣的方式改變這個Activity的屬性.
*/
Window
dialogWindow
=
dialog.getWindow();
WindowManager.LayoutParams
lp
=
dialogWindow.getAttributes();
dialogWindow.setGravity(Gravity.LEFT
|
Gravity.TOP);
/*
*
lp.x與lp.y表示相對於原始位置的偏移.
*
當參數值包含Gravity.LEFT時,對話框出現在左邊,所以lp.x就表示相對左邊的偏移,負值忽略.
*
當參數值包含Gravity.RIGHT時,對話框出現在右邊,所以lp.x就表示相對右邊的偏移,負值忽略.
*
當參數值包含Gravity.TOP時,對話框出現在上邊,所以lp.y就表示相對上邊的偏移,負值忽略.
*
當參數值包含Gravity.BOTTOM時,對話框出現在下邊,所以lp.y就表示相對下邊的偏移,負值忽略.
*
當參數值包含Gravity.CENTER_HORIZONTAL時
*
,對話框水平居中,所以lp.x就表示在水平居中的位置移動lp.x像素,正值向右移動,負值向左移動.
*
當參數值包含Gravity.CENTER_VERTICAL時
*
,對話框垂直居中,所以lp.y就表示在垂直居中的位置移動lp.y像素,正值向右移動,負值向左移動.
*
gravity的默認值為Gravity.CENTER,即Gravity.CENTER_HORIZONTAL
|
*
Gravity.CENTER_VERTICAL.
*
*
本來setGravity的參數值為Gravity.LEFT
|
Gravity.TOP時對話框應出現在程序的左上角,但在
*
我手機上測試時發現距左邊與上邊都有一小段距離,而且垂直坐標把程序標題欄也計算在內了,
*
Gravity.LEFT,
Gravity.TOP,
Gravity.BOTTOM與Gravity.RIGHT都是如此,據邊界有一小段距離
*/
lp.x
=
100;
//
新位置X坐標
lp.y
=
100;
//
新位置Y坐標
lp.width
=
300;
//
寬度
lp.height
=
300;
//
高度
lp.alpha
=
0.7f;
//
透明度
//
當Window的Attributes改變時系統會調用此函數,可以直接調用以應用上面對窗口參數的更改,也可以用setAttributes
//
dialog.onWindowAttributesChanged(lp);
dialogWindow.setAttributes(lp);
/*
*
將對話框的大小按屏幕大小的百分比設置
*/
//
WindowManager
m
=
getWindowManager();
//
Display
d
=
m.getDefaultDisplay();
//
獲取屏幕寬、高用
//
WindowManager.LayoutParams
p
=
getWindow().getAttributes();
//
獲取對話框當前的參數值
//
p.height
=
(int)
(d.getHeight()
*
0.6);
//
高度設置為屏幕的0.6
//
p.width
=
(int)
(d.getWidth()
*
0.65);
//
寬度設置為屏幕的0.95
//
dialogWindow.setAttributes(p);

E. 不同版本的android如何控制對話框寬度

這個是屏幕適配的問題吧。

屏幕寬度不一樣,就算用dp,也不能達到好的效果。

如果想達到最佳的效果(比如dialog寬度大概占屏幕寬度的80%),用dp在不同的屏幕上是達不到預期的效果的。

其實有下面這樣方法可供參考:

  1. 設置match_parent或wrap_content這樣的,再設置一下邊距,每個屏幕上面都能看吧,如果dialog裡面沒有把寬度寫死的話。

  2. 獲取設備的寬高的像素,設置一個比值(如上面的80%),把設備的整個寬度,乘以這個比值,在代碼里動態進行配置。

  3. 如果要用dp來控制,那就建立多個不同的layout-XXX(如layout-lang,layout-ldpi)來適應不同的屏幕吧。

F. android 如何讓自定義dialog的寬度充滿整個屏幕

方案:

通過設置Dialog的樣式實現

步驟:

1、添加style
<stylename="Dialog_FS">
<itemname="android:windowFullscreen">true</item>
<itemname="android:windowNoTitle">true</item>
</style>
2、代碼裡面設置dialog的樣式
Dialogdialog=newDialog(this,R.style.Dialog_FS);//設置全屏樣式
dialog.setContentView(R.layout.main);//設置dialog的布局
dialog.show();//顯示dialog界面

G. android自定義對話框寬不能占滿父layout的解決辦法有哪些

1.FrameLayout

FrameLayout 是 最簡單的一個布局對象。它被定製為你屏幕上的一個空白備用區域,之後你可以在其中填充一個單一對象 —
比如,一張你要發布的圖片。所有的子元素將會固定
在屏幕的左上角;你不能為FrameLayout中的一個子元素指定一個位置。後一個子元素將會直接在前一個子元素之上進行覆蓋填充,把它們部份或全部擋
住(除非後一個子元素是透明的)。

FrameLayout is the simplest type of layout object. It's basically a blank
space on your screen that you can later fill with a single object — for example,
a picture that you'll swap in and out. All child elements of the FrameLayout are
pinned to the top left corner of the screen; you cannot specify a different
location for a child view. Subsequent child views will simply be drawn over
previous ones, partially or totally obscuring them (unless the newer object is
transparent).

FrameLayout默認填充widget等在左上角,然後後面的控制項遮住前面的,比如說有兩個TextView,Text內容分別是I am
textview 1 和

I am textview 2 看到的效果會如下:?xml version="1.0" encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="I am textview 1"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="I am textview 2"

/>

2.LinearLayout

LinearLayout
以你為它設置的垂直或水平的屬性值,來排列所有的子元素。所有的子元素都被堆放在其它元素之後,因此一個垂直列表的每一行只會有一個元素,而不管他們有多
寬,而一個水平列表將會只有一個行高(高度為最高子元素的高度加上邊框高度)。LinearLayout保持子元素之間的間隔以及互相對齊(相對一個元素
的右對齊、中間對齊或者左對齊)。

LinearLayout
還支持為單獨的子元素指定weight。好處就是允許子元素可以填充屏幕上的剩餘空間。這也避免了在一個大屏幕中,一串小對象擠成一堆的情況,而是允許他們放大填充空白。子元素指定一個weight值,剩餘的空間就會按這些子元素指定的weight比例分配給這些子元素。默認的weight值為0。例如,如
果有三個文本框,其中兩個指定了weight值為1,那麼,這兩個文本框將等比例地放大,並填滿剩餘的空間,而第三個文本框不會放大。

下 面的兩個窗體採用LinearLayout,包含一組的元素:一個按鈕,幾個標簽,幾個文本框。兩個窗體都為布局做了一番修飾。文本框的width被設置
為FILL_PARENT;其它元素的width被設置為WRAP_CONTENT。默認的對齊方式為左對齊。左邊的窗體沒有設置weight(默認為
0);右邊的窗體的comments文本框weight被設置為1。如果Name文本框也被設置為1,那麼Name和Comments這兩個文本框將會有同樣的高度。

在 一個水平排列的LinearLayout中,各項按他們的文本基線進行排列(第一列第一行的元素,即最上或最左,被設定為參考基線)。因此,人們在一個窗
體中檢索元素時,就不需要七上八下地讀元素的文本了。我們可以在layout的XML中設置
android:baselineAligned="false",來關閉這個設置。

LinearLayout aligns all children in a single direction — vertically or
horizontally, depending on how you define the orientation attribute. All
children are stacked one after the other, so a vertical list will only have one
child per row, no matter how wide they are, and a horizontal list will only be
one row high (the height of the tallest child, plus padding). A LinearLayout
respects margins between children and the gravity(right, center, or left
alignment) of each child.

LinearLayout是Android
sdk創建project時的默認Layout,支持兩種方式,默認是垂直vertical的線性layout,另一個是水平horizontal方向的線性排列。

效果如下android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="I am textview 1"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="I am textview 2"

/>android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="10px"

android:layout_height="fill_parent"

android:text="I am textview 1"

/>

android:layout_width="10px"

android:layout_height="wrap_content"

android:text="I am textview 2"

/>

3.RelativeLayout

RelativeLayout 允
許子元素指定他們相對於其它元素或父元素的位置(通過ID指定)。因此,你可以以右對齊,或上下,或置於屏幕中央的形式來排列兩個元素。元素按順序排列,
因此如果第一個元素在屏幕的中央,那麼相對於這個元素的其它元素將以屏幕中央的相對位置來排列。如果使用XML來指定這個layout,在你定義它之前,
被關聯的元素必須定義。

這是一個RelativeLayout例子,其中有可視的和不可視的元素。基礎的屏幕layout對象是一個RelativeLayout對象。

這 個視圖顯示了屏幕元素的類名稱,下面是每個元素的屬性列表。這些屬性一部份是由元素直接提供,另一部份是由容器的LayoutParams成員
(RelativeLayout的子類)提供。RelativeLayout參數有
width,height,below,alignTop,toLeft,padding和marginLeft。注意,這些參數中的一部份,其值是相對
於其它子元素而言的,所以才RelativeLayout。這些參數包括toLeft,alignTop和below,用來指定相對於其它元素的左,上和
下的位置。

RelativeLayout lets child views specify their position relative to the
parent view or to each other (specified by ID). So you can align two elements by
right border, or make one below another, centered in the screen, centered left,
and so on. Elements are rendered in the order given, so if the first element is
centered in the screen, other elements aligning themselves to that element will
be aligned relative to screen center. Also, because of this ordering, if using
XML to specify this layout, the element that you will reference (in order to
position other view objects) must be listed in the XML file before you refer to
it from the other views via its reference ID.android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:padding = "10px"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="I am textview 1"

/>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="I am textview 2"

android:layout_marginLeft = "150px"

/>

android:id="@+id/Button02" android:layout_width="wrap_content"
android:text="Ok"

android:layout_height="wrap_content"

android:layout_marginLeft = "240px"

android:layout_marginTop = "40px"

>

android:layout_marginLeft = "160px"

android:layout_marginTop = "40px"

>

4.AbsoluteLayout

AbsoluteLayout 可 以讓子元素指定準確的x/y坐標值,並顯示在屏幕上。(0,
0)為左上角,當向下或向右移動時,坐標值將變大。AbsoluteLayout沒有頁邊
框,允許元素之間互相重疊(盡管不推薦)。我們通常不推薦使用AbsoluteLayout,除非你有正當理由要使用它,因為它使界面代碼太過剛性,以至
於在不同的設備上可能不能很好地工作。

5.TableLayout

TableLayout 將子元素的位置分配到行或列中。android的
一個TableLayout由許多的TableRow組成,每個TableRow都會定義一個row(事實上,你可以定義其它的子對象,這在下面會解釋
到)。TableLayout容器不會顯示row、cloumns或cell的邊框線。每個row擁有0個或多個的cell;每個cell擁有一個
View對象。表格由列和行組成許多的單元格。表格允許單元格為空。單元格不能跨列,這與HTML中的不一樣。下圖顯示了一個TableLayout,圖
中的虛線代表不可視的單元格邊框。

列可以被隱藏,也可以被設置為伸展的從而填充可利用的屏幕空間,也可以被設置為強制列收縮直到表格匹配屏幕大小。對於更詳細信息,可以查看這個類的參考文檔。

TableLayout positions its children into rows and columns. TableLayout
containers do not display border lines for their rows, columns, or cells. The
table will have as many columns as the row with the most cells. A table can
leave cells empty, but cells cannot span columns, as they can in HTML.

TableRow objects are the child views of a TableLayout (each TableRow
defines a single row in the table). Each row has zero or more cells, each of
which is defined by any kind of other View. So, the cells of a row may be
composed of a variety of View objects, like ImageView or TextView objects. A
cell may also be a ViewGroup object (for example, you can nest another
TableLayout as a cell).

TableLayout和HTML的基本上類似,還提供TableRow class, 直接等價與比如說要做成一個類似下面的HTML葉面

I am textview1I am textview2

[OK button]

[Cancel button]android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

android:text="I am textview 1" />

android:paddingLeft = "20px"

android:width = "200px"

android:text="I am textview 2"

/>

android:id="@+id/Button02" android:text="Ok"

>

>

H. android對話框AlertDialog如何設置大小為dip,不同解析度的屏幕都能適應

1 如果只按你的要求來使用dip, 可以在配置文件中使用dimens.xml 在里邊配置數值 如
<resources>
<dimen name="dimens_base_margin">10dp</dimen>
</resources>

然後代碼中讀取 String string = getString(R.dimen.activity_horizontal_margin);
2 適配不是這么簡單的,參考下 http://www.eoeandroid.com/thread-193122-1-1.html
影響顯示的因素有屏幕解析度,像素密度,美工通常給你的都是像素值,你需要用公式轉換下形成你項目里的值

I. android 的 AlertDialog 對話框樣式可以修改嗎

Android 提供了AlertDialog類可通過其內部類Builder輕松創建對話框窗口,但是沒法對這個對話框窗口進行定製,為了修改 AlertDialog 窗口顯示的外觀,解決的辦法就是創建一個指定的 AlertDialog 和 AlertDialog.Builder 類。

定義外觀

我們希望將上面默認的對話框外觀修改為如下圖所示的新對話框風格:

編寫對話框和 Builder 類


閱讀全文

與android對話框寬度相關的資料

熱點內容
加密晶元的計算方法 瀏覽:187
手機存儲為什麼找不到微信文件夾 瀏覽:695
msf埠遷移命令 瀏覽:880
工商app積分怎麼查詢 瀏覽:143
鐵路app怎麼買火車票 瀏覽:309
移魅族除的app怎麼添加 瀏覽:240
兔籠子大號加密 瀏覽:171
單片機程序燒錄操作成功 瀏覽:878
指標高拋低吸點位源碼 瀏覽:205
25匹壓縮機銅管 瀏覽:570
單片機單燈左移05 瀏覽:150
買伺服器練手什麼配置 瀏覽:783
伺服器被毀該怎麼辦 瀏覽:939
python私有庫 瀏覽:514
Python有中文嗎 瀏覽:736
麥塊的伺服器為什麼都進不去 瀏覽:474
新買的伺服器如何打開 瀏覽:35
安卓軟體游戲怎麼開發 瀏覽:319
用撲克擺愛心解壓神器怎麼擺 瀏覽:70
松下製冷壓縮機 瀏覽:275