Android 에서 PopupWindow 가 7.0 이후 에 적합 한 해결 을 자세히 설명 합 니 다.
3027 단어 Android7.0PopupWindow어울리다
이곳 은 주로 구 덩이 를 밟 은 경험 을 기록한다.
필요:위의 그림 왼쪽 효과 와 같이 단추 아래 에 PopupWindow 를 연주 하고 싶 습 니 다.네,아주 간단 한 효과 입 니 다.그런데 7.0 이 적당 한 후에 이 PopupWindow 가 이상 하 게 나타 난 것 을 발견 하고 인터넷 에서 다음 과 같은 방안 을 찾 았 습 니 다.
7.0 적합 방안(그러나 7.1 이 다시 재현 되 었 다)
// popupWindow anchor
public void showAsDropDown(PopupWindow popupWindow, View anchor) {
if (Build.VERSION.SDK_INT < 24) {
popupWindow.showAsDropDown(anchor);
} else {
// android 7.0
int[] location = new int[2];
//
anchor.getLocationOnScreen(location);
popupWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, 0, location[1] + anchor.getHeight());
}
}
그리고 나 서 나 는 즐 거 웠 다.그리고 나 서 나 는 다른 사람 에 게 popwindow 가 7.0(SDK=24)에 어 울 리 는 문 제 를 알려 주 었 다.그리고 모든 popwindow 가 이렇게 바 뀌 었 다.어색 한 것 은 7.1(SDK=25)에서 이 문 제 를 다시 재현 해 이상 을 보 였 다 는 것 이다.
최종 해결 방안
if (Build.VERSION.SDK_INT < 24) {
mPopupWindow = new FixedPopupWindow(popView, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
} else {
int[] location = new int[2];
//
anchor.getLocationOnScreen(location);
int screenHeight = getScreenHeightPixels(context);
mPopupWindow = new PopupWindow(popView, ViewGroup.LayoutParams.MATCH_PARENT,
screenHeight - (location[1] + anchor.getHeight()));
}
초기 화 할 때 동적 으로 높이 를 설정 하여 디 스 플레이 효 과 를 완성 합 니 다.이때 우 리 는 직접 디 스 플레이 를 호출 하면 된다.
mPopupWindow.showAsDropDown(anchor);
작은 사고프로젝트 에서 PopupWindow 를 공용 할 때 한 번 포장 하고 싶 을 것 입 니 다.PopupWindow 의 초기 화 도 육체 적 인 일이 기 때 문 입 니 다.따라서 이러한 적합 한 방안 을 쇼 As DropDown()방법 에서 직접 실현 할 수 있다.
import android.graphics.Rect;
import android.os.Build;
import android.view.View;
import android.widget.PopupWindow;
/**
* Created by smart on 2018/5/15.
*/
public class FixedPopupWindow extends PopupWindow {
public FixedPopupWindow(View contentView, int width, int height){
super(contentView, width, height);
}
.....
@Override
public void showAsDropDown(View anchor) {
if (Build.VERSION.SDK_INT >= 24) {
Rect rect = new Rect();
anchor.getGlobalVisibleRect(rect);//
int h = anchor.getResources().getDisplayMetrics().heightPixels - rect.bottom; // anchor bottom
setHeight(h);// PopupWindow
}
super.showAsDropDown(anchor);
}
...
}
위의 그런 방안 과 비교 하 다.4.567917.두 가지 서로 다른 높이 를 계산 하 는 방법모두 PopupWindow 의 높이 설정 을 통 해 이 루어 집 니 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 에서 PopupWindow 가 7.0 이후 에 적합 한 해결 을 자세히 설명 합 니 다.본 고 는 안 드 로 이 드 에서 PopupWindow 가 7.0 이후 에 적합 한 해결 을 상세 하 게 설명 하고 여러분 에 게 공유 합 니 다.구체 적 으로 다음 과 같 습 니 다. 필요:위의 그림 왼쪽 효과 와...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.