Dialog

1、自定义Dialog

/**   
 * @Title: WeatherDialog.java 
 * @Package com.sq.hbt.view 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author  
 * @date 2015-10-20 上午10:28:13 
 * @version V1.0   
 */
package com.sq.hbt.view;

import android.app.Dialog;
import android.content.Context;
import android.view.Display;
import android.view.Gravity;
import android.view.WindowManager;

import com.sq.hbt.R;
/**
 * @ClassName: WeatherDialog
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author
 * @date 2015-10-20 上午10:28:13
 * 
 */
public class WeatherDialog extends Dialog {

	public WeatherDialog(Context context) {
		this(context, R.style.WeatherDialog);
	}

	public WeatherDialog(Context context, int theme) {
		super(context, theme);
		this.setContentView(R.layout.dialog_weather);
		WindowManager m = getWindow().getWindowManager();
		Display d = m.getDefaultDisplay(); // 为获取屏幕宽、高
		android.view.WindowManager.LayoutParams p = getWindow().getAttributes();
		p.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
		p.y = (int) (d.getHeight() * 0.1); // 新位置Y坐标
		p.width = (int) (d.getWidth() * 0.9); // 宽度设置为屏幕的0.8
//		p.height = (int) (d.getHeight() * 0.6); // 高度设置为屏幕的0.7
		p.alpha = 1.0f; // 透明度
		getWindow().setAttributes(p);
	}
}
2、调用初始化

WeatherDialog wtherdg;
// 创建并初始化Dialog
wtherdg = new WeatherDialog(MainActivity.this);
wtherdg.setCanceledOnTouchOutside(true);
wtherdg.show();

常见问题:

1、Dialog怎样自动适配布局?

宽度可以根据屏幕设置。(如上文所述)

高度不用设置,默认即可。

2、初始化布局时报错如下

FATAL EXCEPTION: main

Process: com.sq.hbt.weather, PID: 24612

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

at android.view.ViewRootImpl.setView(ViewRootImpl.java:595)

at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:270)

...

...

原因:初始化时上下文获取方式问题

wtherdg = new WeatherDialog(getApplicationContext());错误写法

必须是如下写法

wtherdg = new WeatherDialog(MainActivity.this);正确写法

附件代码:R.style.WeatherDialog

  <style name="CustomDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</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>
  <style name="WeatherDialog" parent="@style/CustomDialog">
        <item name="android:windowBackground">@drawable/shape_weather_dialog</item>
        <item name="android:windowNoTitle">true</item>
    </style>
 附件代码:R.layout.dialog_weather

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/color_gray_background" >
<LinearLayout
        android:id="@+id/ll_forecast1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:orientation="horizontal" >

        <RelativeLayout
            android:id="@+id/rl_fc_date1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="0dp"
                android:layout_marginTop="5dp"
                android:background="@color/color_top_blue"
                android:text="今天"
                android:textColor="@color/color_white" />

            <TextView
                android:id="@+id/tv_date1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_marginLeft="30dp"
                android:layout_marginTop="5dp"
                android:text="----日"
                android:textColor="@color/color_black"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/tv_week1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/tv_date1"
                android:layout_below="@+id/tv_date1"
                android:layout_marginTop="5dp"
                android:text="星期----"
                android:textColor="@color/color_black"
                android:textSize="13sp" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/rl_fc_day1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_weight="1"
            android:gravity="left" >

            <TextView
                android:id="@+id/tv_day_wendu1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="高温----℃"
                android:textColor="@color/color_orange_dark"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/tv_day_type1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_day_wendu1"
                android:layout_marginTop="2dp"
                android:text="白天气象--"
                android:textColor="@color/color_orange_dark"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/tv_day_feng1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_day_type1"
                android:layout_marginTop="2dp"
                android:text="风向--风力--级"
                android:textColor="@color/color_orange_dark"
                android:textSize="13sp" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/rl_fc_night1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="left" >

            <TextView
                android:id="@+id/tv_night_wendu1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="低温----℃"
                android:textColor="@color/color_blue_mid"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/tv_night_type1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_night_wendu1"
                android:layout_marginTop="2dp"
                android:text="夜晚气象--"
                android:textColor="@color/color_blue_mid"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/tv_night_feng1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_night_type1"
                android:layout_marginTop="2dp"
                android:text="风向--风力--级"
                android:textColor="@color/color_blue_mid"
                android:textSize="13sp" />
        </RelativeLayout>
    </LinearLayout>
</RelativeLayout>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值