① android開發主題樣式詳解
application標簽中的@style/AppTheme引用自哪個文唯弊枝件夾中的styles.xml,這是根據運行此程序的手機系統來決定的,卜逗如果手機系統的API版本是11以上就是v11/styles.xml,API版本是14以上就是v14/styles.xml,以此類推。我們可以通過修改AppBaseTheme的父主題來實現我們需要的樣式,此文章主要就是來討論這個主題如何修改。
使用android系統中自帶的主題要加上"android:",如:android:Theme.Black
使用v7兼容包中的主題不需要前綴,如:Theme.AppCompat
系統自帶主題:
API 1:
android:Theme 根主題
android:Theme.Black 背景黑色
android:Theme.Light 背景白色
android:Theme.Wallpaper 以桌面牆紙為背景
android:Theme.Translucent 透明背景
android:Theme.Panel 平板風格
android:Theme.Dialog 對話框風格
API 11:
android:Theme.Holo Holo根主題
android:Theme.Holo.Black Holo黑主題
android:Theme.Holo.Light Holo白主題
API 14:
android:Theme.DeviceDefault 設備默認根主題
android:Theme.DeviceDefault.Black 設備默認黑主題
android:Theme.DeviceDefault.Light 設備默認白主題
API 21: (網上常說的 Android Material Design 就是要用這種主題)
android:Theme.Material Material根主題
android:Theme.Material.Light Material白主題
兼容包v7中帶的主題:
Theme.AppCompat 兼容主題的根主題
Theme.AppCompat.Black 兼容主題的黑色主題
Theme.AppCompat.Light 兼容主題的白色主題
以下都是指「包含」,比如包含「Dialog」表示對話框風格
比如Theme.Dialog、Theme.Holo.Dialog、Theme.Material.Dialog、Theme.AppCompat.Dialog都是對話框風格
Black 黑色風格
Light 光明風格
Dark 黑暗風格
DayNight 白晝風格
Wallpaper 牆紙為背景
Translucent 透明背景
Panel 平板風格
Dialog 對話框風格
NoTitleBar 沒有TitleBar
NoActionBar 沒有ActionBar
Fullscreen 全屏風格
MinWidth 對話框或者ActionBar的寬度根據內指敏容變化,而不是充滿全屏
WhenLarge 對話框充滿全屏
TranslucentDecor 半透明風格
NoDisplay 不顯示,也就是隱藏了
WithActionBar 在舊版主題上顯示ActionBar
② 如何去掉android系統導航欄
隨意設置自定義對話框的位置2.設置對話框的背景為透明(這樣使得自定義的圖標完全起作用)
彈出對話框時不會同時彈出導航欄。
去除對話框的標題欄(如果不去除,標題欄可能顯示為一條橫線)
java代碼部分:
WindowdialogWindow=dialog.getWindow();
WindowManager.LayoutParamslp=dialogWindow.getAttributes();
dialogWindow.setGravity(Gravity.CENTER);
lp.x=0;//220;
lp.y=0;//130;
lp.width=422;
lp.height=167;
lp.type=WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
lp.flags=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
dialogWindow.setAttributes(lp);
XML代碼部分(用於設置對話框的style):
<stylename="GeneralDialog"parent="android:style/Theme.Holo.Light.Dialog">
<itemname="android:windowBackground">@android:color/transparent</item>
<itemname="android:windowNoTitle">true</item>
</style>
③ android中如何去掉對話框默認的黑色背景
// 顯昌慎示透明的對話框
4. AlertDialog alertDialog = new AlertDialog.Builder(this).setMessage(
5. "透明耐兆敬對話框").setPositiveButton("確定", null).create();
6. Window window = alertDialog.getWindow();
7. WindowManager.LayoutParams lp = window.getAttributes();
8. /猜逗/ 設置透明度為0.3
9. lp.alpha = 0.6f;
10. window.setAttributes(lp);
11. alertDialog.show();
④ 如何解決android 5.0 dialog背景無法透明的問題
沒人使用晌胡么? 使用升困對話框時不讓激活它的activity保持平常宴笑攔時的亮度 查看原帖>>
⑤ android notification點擊彈出對話框
我想你要的功能應該是圖中的這個吧?在API demo中有示例的。需要用到IncomingMessageInterstitial
{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.incoming_message_interstitial);
Buttonbutton=(Button)findViewById(R.id.notify_app);
button.setOnClickListener(newButton.OnClickListener(){
publicvoidonClick(Viewv){
switchToApp();
}
});
}
/**
*Performaswitchtotheapp.Anewactivitystackisstarted,replacing
*whateveriscurrentlyrunning,andthisactivityisfinished.
*/
voidswitchToApp(){
//.Inthissimple
//example,.
CharSequencefrom=getIntent().getCharSequenceExtra(IncomingMessageView.KEY_FROM);
CharSequencemsg=getIntent().getCharSequenceExtra(IncomingMessageView.KEY_MESSAGE);
//Buildthenewactivitystack,launchit,andfinishthisUI.
Intent[]stack=IncomingMessage.makeMessageIntentStack(this,from,msg);
startActivities(stack);
finish();
}
}
具體可以參考API demos里的IncomingMessageInterstitial.java和IncomingMessage.java
⑥ android透明區域點擊穿透怎麼實現
你可以獲取對話框的點擊事件,比如點擊了確定然後你就跳轉 AlertDialog.Builder builder = new Builder(CommentActivity.this); builder.setMessage("確定要跳轉嗎?"); builder.setTitle("提示"); builder.setPositiveButton("確認", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub arg0.dismiss(); 這里跳轉到你想要去的頁面 } }); builder.setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); arg0就是擾歲該listener的介面啊,通過這個參數就可以關閉對話框。 跳到想去的頁面就startIntent就好了,你把那一行中文換成 Intent it = new Intent(this,UserActivity.class); startActivity(it); 當然要差掘跳去哪個頁面就你自己決定 AlertDialog.Builder builder = new Builder(CommentActivity.this); builder.setMessage("確定要跳轉嗎?"); builder.setTitle("提緩慶睜示"); builder.setPositiveButton("確認", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub arg0.dismiss(); Intent it = new Intent(this,UserActivity.class); startActivity(it); } }); builder.setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show();
⑦ android設置dialog在第幾層顯示
android中dialog都是彈出的對話框,沒有第幾層這個概念,只有dialog有級別。
具體實現代碼:
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();
⑧ 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);
⑨ Android中Popupwindow和Dialog的區別
除了外觀樣式和顯示的位置的區別之外,他們之間最本質的區別是:
dialog是非阻塞式對話框,popupwindow是阻塞式對話框。也就是說dialog彈出時
後台還可以進行很多的操作,而popupwindow彈出是
後台進程是阻塞的,要一直等待popupwindow
消失
才會進行操作。
⑩ 在android應用中如何實現每次從桌面進入程序時都彈出一個對話框,其他時候不彈出
你可以把activity設置成透明,用activity來彈出對話框