Android开发如何设置Dialog样式 5

在application中android:theme="@android:style/Theme.Light.NoTitleBar"这样设置了,左边那个是现在的,想要右边... 在application中android:theme="@android:style/Theme.Light.NoTitleBar"这样设置了,左边那个是现在的,想要右边那个效果,不考虑自定义,4.0以后好像这个是系统自带的了。求方法 展开
 我来答
hxz5107
2015-07-22 · TA获得超过1224个赞
知道小有建树答主
回答量:276
采纳率:50%
帮助的人:81.7万
展开全部

  

  核心代码:

   

  1.   package com.zms.toast;

  2.   

  3.   import android.app.Dialog;

  4.   import android.content.Context;

  5.   import android.content.res.Resources;

  6.   import android.os.Handler;

  7.   import android.os.Message;

  8.   import android.util.DisplayMetrics;

  9.   import android.view.Gravity;

  10.   import android.view.Window;

  11.   import android.view.WindowManager;

  12.   import android.widget.TextView;

  13.   

  14.   import java.util.Random;

  15.   

  16.   /**

  17.   * Created by AlexZhou on 2015/3/2.

  18.   * 14:51

  19.   */

  20.   public class CustomDialog extends Dialog {

  21.   private static int defaultWidth = 200;

  22.   private static int defaultHeight = 160;

  23.   private int progress = 0;

  24.   private TextView dialogText;

  25.   

  26.   public CustomDialog(Context context) {

  27.   super(context);

  28.   }

  29.   

  30.   public CustomDialog(Context context, int layout, int style) {

  31.   this(context, defaultWidth, defaultHeight, layout, style);

  32.   }

  33.   

  34.   public float getDensity(Context context) {

  35.   Resources res = context.getResources();

  36.   DisplayMetrics dm = res.getDisplayMetrics();

  37.   return dm.density;

  38.   }

  39.   

  40.   public CustomDialog(Context context, int width, int height, int layout, int style) {

  41.   super(context, style);

  42.   // 设置内容

  43.   setContentView(layout);

  44.   // 设置窗口属性

  45.   Window window = getWindow();

  46.   WindowManager.LayoutParams params = window.getAttributes();

  47.   // 设置宽度、高度、密度、对齐方式

  48.   float density = getDensity(context);

  49.   params.width = (int) (width * density);

  50.   params.height = (int) (height * density);

  51.   params.gravity = Gravity.CENTER;

  52.   window.setAttributes(params);

  53.   

  54.   dialogText = (TextView) findViewById(R.id.dialogText);

  55.   new Thread(new TimeThread()).start();

  56.   }

  57.   

  58.   final Handler timeHandler = new Handler() {

  59.   public void handleMessage(Message msg) {

  60.   switch (msg.what) {

  61.   case 1:

  62.   if (progress < 100) {

  63.   progress = progress + new Random().nextInt(10);

  64.   if (progress <= 100) {

  65.   dialogText.setText(更新进度 + progress + %);

  66.   } else {

  67.   dialogText.setText(更新进度100%);

  68.   }

  69.   } else {

  70.   dialogText.setText(更新完成);

  71.   dismiss();

  72.   }

  73.   }

  74.   super.handleMessage(msg);

  75.   }

  76.   };

  77.   

  78.   public class TimeThread implements Runnable {

  79.   

  80.   @Override

  81.   public void run() {

  82.   while (true) {

  83.   try {

  84.   Thread.sleep(1000);

  85.   Message message = new Message();

  86.   message.what = 1;

  87.   timeHandler.sendMessage(message);

  88.   } catch (Exception e) {

  89.   e.printStackTrace();

  90.   }

  91.   }

  92.   }

  93.   }

  94.   

  95.   @Override

  96.   public void dismiss() {

  97.   super.dismiss();

  98.   }

  99.   }

  100.   

放荡不羁神经病
2014-08-08 · TA获得超过794个赞
知道小有建树答主
回答量:1580
采纳率:65%
帮助的人:573万
展开全部
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
int position = info.position;
FileItem item = mListCurrDirectory.get(position);

if (item.getPath().endsWith(".apk"))
// if (Tools.hasConfigFile()) {
menu.add(Menu.NONE, 0, Menu.NONE, R.string.title_install);
// }

else
menu.add(Menu.NONE, 0, Menu.NONE, R.string.title_open);
menu.add(Menu.NONE, 3, Menu.NONE, R.string.title_copy);

if (mMediaType == MediaType.All) {
menu.add(Menu.NONE, 2, Menu.NONE, R.string.title_delete);
menu.add(Menu.NONE, 4, Menu.NONE, R.string.title_rename);
menu.add(Menu.NONE, 5, Menu.NONE, R.string.title_cut);
}
menu.add(Menu.NONE, 1, Menu.NONE, R.string.title_property);

if (FileUtils.isImage(item)) {
menu.add(Menu.NONE, 6, Menu.NONE, R.string.title_wallpater);
}

menu.setHeaderIcon(android.R.drawable.ic_menu_view).setHeaderTitle(
R.string.title_actions);

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QQMSD8
2014-08-08 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
黑色的这个dialog是系统默认的样式,白色的是android4.0以上自带的一个样式,需要在manifest的application中引用@android:style/Theme.Holo.Light这个样式
追问
app需要没有标题栏,@android:style/Theme.Holo.Light是需要API11的,但我需要最低兼容到2.2,目前是这样设置的 android:theme="@android:style/Theme.Light.NoTitleBar" 
Dialog是代码生成的,如何解决呢?
追答
建议下载最新版本的SDK里面自带最新的ADT版的eclipse,
创建项目的时候,里面会有一个android.support.v7.appcompat
可以让3.0以下的版本兼容actionBar 和一些样式
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aminigray
2018-03-19
知道答主
回答量:6
采纳率:0%
帮助的人:2.5万
展开全部

试了几乎全网的方法,觉得设计.xml文件布局,然后在.java文件中加载布局,最简单灵活。

final AlertDialog ad = new AlertDialog.Builder(this)
        .create();
ad1.show();
Window window = ad.getWindow();
window.setContentView(R.layout.dialog_1);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式