开发者社区> 西北野狼> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

bug -- android 7.0 popwindow显示位置异常情况解决

简介: android 7.0 popwindow显示位置异常,在android7.1官方进行解决了,但是还是要多7.0的bug进行解决,我的解决方案里面通过重写popwindow进行适配: import android.
+关注继续查看

 android 7.0 popwindow显示位置异常,在android7.1官方进行解决了,但是还是要多7.0的bug进行解决,我的解决方案里面通过重写popwindow进行适配:

import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.widget.PopupWindow;

/**
 * 解决7.0 popwindow显示位置的问题
 * Created by soyoungboy on 2017/3/16.
 */

public class FixPopWindow extends PopupWindow {
    public FixPopWindow() {
    }


    public FixPopWindow(View contentView) {
        super(contentView);
    }


    public FixPopWindow(View contentView, int width, int height) {
        super(contentView, width, height);
    }


    public FixPopWindow(View contentView, int width, int height, boolean focusable) {
        super(contentView, width, height, focusable);
    }


    public FixPopWindow(Context context) {
        super(context);
    }


    public FixPopWindow(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    public FixPopWindow(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    public FixPopWindow(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }


    public FixPopWindow(int width, int height) {
        super(width, height);
    }


    @Override public void showAsDropDown(View anchorView) {
        super.showAsDropDown(anchorView);
        if (Build.VERSION.SDK_INT == 24) {
            int[] a = new int[2];
            anchorView.getLocationInWindow(a);
            showAtLocation(anchorView, Gravity.NO_GRAVITY, 0, a[1] + anchorView.getHeight() + 0);
        } else {
            super.showAsDropDown(anchorView);
        }
    }


    @Override
    public void showAsDropDown(View anchorView, int xoff, int yoff) {
        if (Build.VERSION.SDK_INT == 24) {
            int[] a = new int[2];
            anchorView.getLocationInWindow(a);
            showAtLocation(anchorView, Gravity.NO_GRAVITY, xoff,
                a[1] + anchorView.getHeight() + yoff);
        } else {
            super.showAsDropDown(anchorView, xoff, yoff);
        }
    }
}

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android OpenGL显示任意3D模型文件
Android OpenGL显示任意3D模型文件
0 0
Android OpenGL 显示基本图形及相关概念解读
Android OpenGL 显示基本图形及相关概念解读
0 0
Android studio preview不显示
作为一个刚学习Android的小白,装Android studio的过程中就遇到了不少问题,这两天发现preview一直不显示,百度查了一下,很多教程都只是改了一下这里,但是治标不治本啊,新的项目又会出现这个问题。
0 0
Android Studio Dolphin | 2021.3.1不显示布局XML预览
Android Studio Dolphin | 2021.3.1不显示布局XML预览
0 0
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
Android 音乐APP(四)显示专辑图片、本地数据库、自定义通知栏样式、通知栏显示
0 0
Android Glide加载网络图片不显示,但用网页打开又正常显示
Android Glide加载网络图片不显示,但用网页打开又正常显示
0 0
Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示
Android 天气APP(十四)修复UI显示异常、优化业务代码逻辑、增加详情天气显示
0 0
Android 天气APP(六)旋转风车显示风力、风向
Android 天气APP(六)旋转风车显示风力、风向
0 0
Android控件显示、隐藏时,增加动画效果
Android控件显示、隐藏时,增加动画效果
0 0
Android ProgressBar进度条,以及自定义显示
Android ProgressBar进度条,以及自定义显示
0 0
+关注
西北野狼
擅长Android ,J2EE开发 博客园地址:http://www.cnblogs.com/androidsuperman/p/7834762.html github地址: https://github.com/soyoungboy
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载