1. android怎麼修改系統dialog風格
1、編寫一個文本樣式。
DIALOG的標題是一個textview,在sytles.xml中,添加如下代碼來設置你自己的文本樣式:
?
<style name="DialogWindowTitle">
<item name="android:textSize">22sp</item>
<item name="android:textColor">@color/font_dark_grey</item>
</style>
2、設置對話框的標題主題。
上面的標題文本並不能直接設置為對話框的標題樣式。 我們還需要編寫一個表示標題的主題的style,在這里指定標題的文本樣式。代碼如下:
?
<style name="DialogWindowTitle.DeviceDefault">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@style/DialogWindowTitle</item>
</style>
3、設置對話框主題。
接下來,我們編寫我們的對話框主題,在這里指定標題的主題。由於一些屬性並不是public的,所以我們需要繼承自原來的某個style,代碼如下:
?
<!--Dialog主題-->
<style name="Theme.DeviceDefault.Dialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
<item name="android:windowTitleStyle">@style/DialogWindowTitle.DeviceDefault</item>
</style>
4、自定義App的主題。
接下來,我們需要在我們的App theme中指定我們的對話框使用這種主題,所以需要定義一個App theme。同樣由於App theme的許多屬性並不是public的(比如下面要提到的標題下面的那條藍線),所以我們要繼承自一個原生的style。這里我根據程序需要選擇了Theme.Holo.Light.NoActionBar,代碼如下:
?
<style name="ParkingTheme" parent="@android:style/Theme.Holo.Light.NoActionBar">
<item name="android:dialogTheme">@style/Theme.DeviceDefault.Dialog</item>
</style>
5、指定App主題。
最後一步,我們需要在AndroidManifest.xml文件中,指定我們的app主題。這步很簡單,只需要在application標簽中指定android:theme的值即可,如下:
?
android:theme="@style/ParkingTheme"
不過這只是指定了Dialog的主題。如果是通過AlertDialog創建出來的對話框,主題還是原來的。所以我們還需要以下步驟。
7、編寫AlertDialog主題。
我們無法直接繼承系統主題里的AlertDialog的style。如把parent指定為Theme.DeviceDefault.Dialog.Alert,Theme.Holo.Dialog.Alert,Theme.DeviceDefault.Light.Dialog.Alert或Theme.Holo.Light.Dialog.Alert,都會導致編譯不過。所以我們需要繼承自Dialog的style。在這里我以Theme.Holo.Light.Dialog為例,代碼如下:
<!--AlderDialog主題-->
<style name="Theme.DeviceDefault.Dialog.Alert" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle.DeviceDefault</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>
在這里我參考了原生的alertDialog的style,設定了窗口背景為透明,以及windowContentOverlay為null這兩個重要屬性,否則你會看到在AlertDialog下面還有一層對話框的背景,或者是對話框的背景遮住了所有內容這樣的問題存在。
8、指定AlertDialog的主題。
我們需要在第4步所說的自定義的AppTheme中,添加一行代碼來指定要使用的AlertDialog的style,代碼如下:
?
<item name="android:alertDialogTheme">@style/Theme.DeviceDefault.Dialog.Alert</item>
9、修改標題下面的藍色線。
如果你修改了對話框的主題顏色,那麼標題下面的藍色的線肯定會讓你很郁悶。如果對話框較少,你可以選擇隱藏標題,然後自定義一個包含了標題的View來設置為對話框的內容。但是如果你的對話框有許多種,而且本來都是可以調用原來的API就來生成的話,要去定義這么多個帶標題的view,這樣做下來心裡肯定是很糾結的。
標題下面的藍色的線,並不是在Dialog或AlertDialog中設置或通過它們的style中定義的。它是定義在各種風格的dialog的layout當中,然後再在AppTheme裡面指定dialog的對應屬性。遺憾的是,目前我看到這幾個相關屬性還不是public的,不能自己設置,所以只有通過java代碼來實現了。
表示這條藍色的線的叫做titleDivider,我們可以通過getResources()的API來獲取它的IP,然後設置顏色。代碼如下:
?
public static final void dialogTitleLineColor(Dialog dialog, int color) {
Context context = dialog.getContext();
int divierId = context.getResources().getIdentifier("android:id/titleDivider", null, null);
View divider = dialog.findViewById(divierId);
divider.setBackgroundColor(color);
2. android怎麼實現自定義對話框的背景
1. 在res/values下創建兩個xml文件,一個為主體風格資源styles.xml一個為顏色資源colors.xml
styles.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name = "translucent" parent = "@android:style/Theme.Dialog">
<item name = "android:windowBackground">@color/translucent_background</item>
<item name = "android:windowIsTranslucent">true</item>
<item name = "android:windowNoTitle">true</item>
<item name ="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>
</resources>
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name = "translucent_background">#00000000</color>
</resources>
2. 在AndroidManifest.xml為Activity指定自定義的主題
<activity android:name = 「.right」 android:theme = 「@style/translucent」 />
3. 在顯示圖片的activity布局文件中加入圖片資源(設置layout的背景或者增加一個ImageView顯示圖片)
4.在Activity java文件right.java中關聯布局文件,然後運行Android工程到此activity.
3. 在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);
4. android 如何在 dialog 中添加圖片
用自定義Dialog去載入一個View來顯示即可。
以下為示例代碼:
Android中,在Dialog中增加EditText需要使用view控制項,也可參考附件源代碼。
具體實現代碼:
1.創建對象框
AlertDialog.Builder builder = new Builder(context);
builder.setTitle("請輸入"); //設置對話框標題
builder.setIcon(android.R.drawable.btn_star); //設置對話框標題前的圖標
2.創建EditText輸入框
final EditText edit = new EditText(context);
3.將輸入框賦值給Dialog,並增加確定取消按鍵
builder.setView(edit);
builder.setPositiveButton("確認", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "你輸入的是: " + edit.getText().toString(), Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "你點了取消", Toast.LENGTH_SHORT).show();
}
});
4.設置常用api,並show彈出
builder.setCancelable(true); //設置按鈕是否可以按返回鍵取消,false則不可以取消
AlertDialog dialog = builder.create(); //創建對話框
dialog.setCanceledOnTouchOutside(true); //設置彈出框失去焦點是否隱藏,即點擊屏蔽其它地方是否隱藏
dialog.show();
5. android 如何在 dialog 中添加圖片
一般來說
在Android里顯示Gif圖片,只會顯示第一幀。如果想顯示gif圖片的話可以用Movie來顯示圖片
。
在dialog顯示圖片可以使用AlertDialog
載入一個布局,布局中顯示你所要顯示的圖片。比如
LayoutInflater
inflater
=
getLayoutInflater();
View
layout
=
inflater.inflate(R.layout.dialog,
(ViewGroup)
findViewById(R.id.dialog));
new
AlertDialog.Builder(this).setTitle("自定義布局").setView(layout)
.setPositiveButton("確定",
null)
.setNegativeButton("取消",
null).show();
希望能幫到你。
6. android如何創建帶3個按鈕的對話框
1.先在布局界面上,拖進來一個按鈕控制項,並設置顯示的文字,記得保存(Ctrl+S)
之後在代碼界面上定義該按鈕。
2.新建一個按鈕點擊的方法。
onClick(View v) :點擊之後的動作。
3.設置按鈕的點擊事件指向我們新建的點擊方法。
setOnClickListener:設置點擊之後觸發的動作。
4.在onClick里添加彈出對話框的代碼。
AlertDialog:一個對話框類。
MainActivity.this:對話框顯示的位置。
setTitle:設置標題。
setMessage:設置內容。
setPositiveButton:設置對話框的按鈕。
show():顯示對話框。
至此所有代碼已經完成,編譯並生成,在Android安卓虛擬機上顯示如下。
7. 微信聊天對話框怎麼設置
微信是不能更改對話框顏色的,但可以對每個人的聊天背景進行自定義設置。
微信對聊天背景進行自定義設置的操作步驟如下:
1、首先打開微信頁面並點擊設置選項進入。