Dialog

来源:互联网 发布:淘宝拍a发b处罚力度 编辑:程序博客网 时间:2024/06/05 05:34

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.7p.alpha = 1.0f; // 透明度getWindow().setAttributes(p);}}
2、调用初始化

WeatherDialog wtherdg;// 创建并初始化Dialogwtherdg = 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
原创粉丝点击