Android 开发 PopupWindow 破坏android 全屏显示示

博客分类:
使用Activity伪造Dialog的时候出现不能全屏的问题,如图:
在对话框后边有一个黑色的背景。
解决方法:
在AndroidManifest.xml中为Activity添加对话框主题,
&activity android:name="com.jftt.odf_android.activity.XxxActivity"
android:theme="@style/Theme.CustomDialog"
android:launchMode="singleInstance" /&
这里我们使用的是自定义主题:
在Style.xml中为à
&style name="Theme.CustomDialog" parent="@android:style/Theme.Dialog"&
&item name="android:windowNoTitle"&true&/item&
&!-- 设置title --&
&item name="android:windowBackground"&@android:color/transparent&/item&
&item name="android:windowFrame"&@null&/item&
&!-- 设置边框 --&
&item name="android:windowIsTranslucent"&true&/item&
&!-- 设置半透明 --&
&item name="android:windowFullscreen"&true&/item&
&!-- 设置全屏 --&
运行可能还有问题,所以要在这个Activity中添加一行语句:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frame_manage_dialog);
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);//需要添加的语句
initView();
浏览 10858
Activity伪造Dialog,这个Dialog显示的时候界面不会黑一会吗?不会啊,就像你打开一个新页面一样,只有这个页面全部加载才跳转的吧。
txlong_onz
浏览: 990008 次
来自: 郑州
非常有用,多谢楼主
haotainan 写道Activity伪造Dialog,这个 ...
Activity伪造Dialog,这个Dialog显示的时候界 ...
cainingyouyou 写道7楼的,tag,怎么解决的啊1 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'> &>&&>&&>&正文
  Android项目开发中怎么样利用PopupWindow实现窗口悬浮效果呢,实现了新的窗口悬浮于屏幕之上,效果如下:
  下面来看工程目录:
  其中popview.xml为悬浮的窗口布局文件:
  &?xml version="1.0" encoding="utf-8" ?&&LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/mycolor"&&Button android:id="@+id/mybutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加到当前" /&&Button android:id="@+id/mybutton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加到选择" /&&/LinearLayout&
  MainActivity的主要代码如下:
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  //加载布局文件
  myView= (ViewGroup)getLayoutInflater().inflate(R.layout.popview, null);
  //后两个参数表示popupWindow的宽,高
  popupWindow = new PopupWindow(myView,200,200);
  public void toSecond(View view){
  popupWindow.showAsDropDown(myView,50,200);
  创建PopupWindow,宽和高分别是200。点击按钮时执行方法:
  解释一下:
  myView= (ViewGroup)getLayoutInflater().inflate(R.layout.popview, null);
  加载悬浮窗口的布局文件。
  popupWindow = new PopupWindow(myView,200,200);
  public void toSecond(View view){
  popupWindow.showAsDropDown(myView,50,200);
  显示悬浮窗口,showAsDropDown方法中第一个参数表示悬浮的窗口基于myView之上,后两个参数表示悬浮窗口距离myView的x轴50,y轴200的位置。
提示:支持键盘“← →”键翻页今天看啥 热点:
Android PopupWindow显示位置和显示大小,androidpopupwindow
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&http://schemas.android.com/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:background=&#DA4F30&
android:cacheColorHint=&#000000&
android:orientation=&vertical& &
android:id=&@+id/lv_dialog&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:cacheColorHint=&#&
android:scrollbars=&none&
android:overScrollMode=&never&&
&/ListView&
&/LinearLayout&
package com.example.
import android.app.A
import android.content.C
import android.graphics.drawable.BitmapD
import android.os.B
import android.view.G
import android.view.LayoutI
import android.view.V
import android.view.View.OnClickL
import android.view.W
import android.view.WindowM
import android.widget.AdapterV
import android.widget.AdapterView.OnItemClickL
import android.widget.ArrayA
import android.widget.ImageV
import android.widget.LinearL
import android.widget.ListV
import android.widget.PopupW
public class MainActivity extends Activity {
private LinearL
private ListView listV
private PopupWindow popupW
private String title[] = { &1&, &2&, &3&, &4&, &5& };
ImageView imageV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
imageView=(ImageView) findViewById(R.id.imageview_above_more);
imageView.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showPopupWindow(imageView);
public void showPopupWindow(View parent) {
//加载布局
layout = (LinearLayout) LayoutInflater.from(MainActivity.this).inflate(
R.layout.dialog, null);
//找到布局的控件
listView = (ListView) layout.findViewById(R.id.lv_dialog);
//设置适配器
listView.setAdapter(new ArrayAdapter&String&(MainActivity.this,
R.layout.text, R.id.tv_text, title));
// 实例化popupWindow
popupWindow = new PopupWindow(layout, 300,500);
//控制键盘是否可以获得焦点
popupWindow.setFocusable(true);
//设置popupWindow弹出窗体的背景
popupWindow.setBackgroundDrawable(new BitmapDrawable(null,&&));
WindowManager manager=(WindowManager) getSystemService(Context.WINDOW_SERVICE);
@SuppressWarnings(&deprecation&)
//获取xoff
int xpos=manager.getDefaultDisplay().getWidth()/2-popupWindow.getWidth()/2;
//xoff,yoff基于anchor的左下角进行偏移。
popupWindow.showAsDropDown(parent,xpos, 0);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView&?& arg0, View arg1, int arg2,
long arg3) {
//关闭popupWindow
popupWindow.dismiss();
popupWindow =
源码下载地址
popUpWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.page2));设置的是popupwindow(window容器)的背景。popUpWindow = new PopupWindow(show_popvieView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //是将show_popvieView放入容器中,以自适应作为大小,且容器也采用自适应。综上,如果你设置大小,导致show_popvieView沾满整个屏幕,那么window容器最为底层,设置的背景坑定是看不见的。建议:背景设置采用设置show_popvieView的背景。如果有多层,可以在内容里面镶嵌,最好别直接设置外层popupwindow容器
你可以即时的计算你的popupwindow所占空间 比如你现在的初始化传参是300pxX250px 最好即时的dp转成px/*** 将dip或dp值转换为px值,保证尺寸大小不变* * @param dipValue* @param scale*
(DisplayMetrics类中属性density)* @return*/public static int dip2px(float dipValue, float scale) {return (int) (dipValue * scale + 0.5f);}public static DisplayMetrics getMetrics(Activity activity) {DisplayMetrics metrics = new DisplayMetrics();Display display = activity.getWindowManager().getDefaultDisplay();display.getMetrics(metrics);}再调用的话就是new PopupWindow(findViewById(R.id.mainlayout), dip2px(300,getMetrics(youractivity)), dip2px(250,getMetrics(youractivity)));还有 如果是在平板上面显示 这种方法也会失去效果 如果你想在高分辨率下 显示 就得传更高的值才有相同的显示效果 下面是判断是否是平板的方法private boolean isPad() {
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
// 屏幕宽度
float screenWidth = display.getWidth();
// 屏幕高度
float screenHeight = display.getHeight();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
double x = Math.pow(dm.widthPixels / dm.xdpi, 2);
double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
// 屏幕尺寸
double screenInches = Math.sqrt(x + y);
// 大于6尺寸则为Pad
if (screenInches &= 6.0) {
}...余下全文>>
相关搜索:
相关阅读:
相关频道:
Android教程最近更新popupwindow的高度设为wrap_content后,弹出后高度还是占满全屏。
[问题点数:40分]
popupwindow的高度设为wrap_content后,弹出后高度还是占满全屏。
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|下次自动登录
现在的位置:
& 综合 & 正文
Android PopupWindow 与 软键盘 的遮挡问题解决
PopupWindow含有输入框时,点击输入框,软键盘可能会挡住PopupWindow,而我们希望的是软键盘能够把PopupWindow给顶上去。
开始在网上查了不少资料,都没有一个能解决我的问题,于是自己动手多试了几个设置,误打误撞,把问题解决了。
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setFocusable(true);
popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
popupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, 0);
这里说明一下,主要是设置
popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
这两句,而且顺序不能反,如果反过来就没效果了。
【上篇】【下篇】}

我要回帖

更多关于 安卓开发全屏显示 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信