PopupWindow的使用,这里是分析QQ通讯录的源码看到的,这里分享下:
以“拨号盘”界面的-最近联系人 右边的“筛选”按钮为例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@+id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout android:id="@+id/tv_call_log" android:background="@drawable/bg_header" android:layout_width="fill_parent" android:layout_height="wrap_content">
<TextView android:textSize="20.0sp" android:textColor="#ffffff" android:gravity="center" android:id="@+id/titleText"
android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="最近联系人" android:layout_centerInParent="true" />
<com.farmer.views.PopuMenuTextButton
android:textColor="#ffffff" android:gravity="center" android:id="@+id/titleImg" android:background="@drawable/bg_top_btn" android:layout_width="46.0dip"
android:layout_height="34.0dip" android:layout_marginRight="4.0dip" android:text="筛选" android:layout_alignParentRight="true" android:layout_centerVertical="true" />
</RelativeLayout>
</LinearLayout>
上面的PopuMenuTextButton 就是需要复写的Butoon
public abstract interface nl
{
public abstract void popAwindow(View paramView);
}
public class PopuMenuTextButton extends Button
{
private nl pwindow;
public PopuMenuTextButton(Context paramContext, AttributeSet paramAttributeSet)
{
super(paramContext, paramAttributeSet);
}
protected void onDetachedFromWindow()
{
if (this.pwindow != null)
this.pwindow.popAwindow(this);
super.onDetachedFromWindow();
}
public void setOnDetachedListener(nl paramnl)
{
this.pwindow = paramnl;
}
}
下面就是Activty的关键代码:
private PopuMenuTextButton pbtn;
private PopupWindow pwindow;
//onCreate.......
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_dialerpad);
this.pbtn = (PopuMenuTextButton) findViewById(R.id.titleImg);
pbtn.setOnClickListener(this);}
//显示PopupWindow 窗口
public void showPop(){
int i1 = -1;
if (upOrdown() == i1){
//这边是需要再构造一个布局文件的
View localView1 = LayoutInflater.from(this).inflate(
R.layout.layout_popup_calllog_type, null);
View localView2 = localView1.findViewById(R.id.popup_callLog_all);
View localView3 = localView1.findViewById(R.id.popup_callLog_miss);
View localView4 = localView1.findViewById(R.id.popup_callLog_incoming);
View localView5 = localView1.findViewById(R.id.popup_callLog_outgoing);
localView2.setOnClickListener(this);
localView3.setOnClickListener(this);
localView4.setOnClickListener(this);
localView5.setOnClickListener(this);
PopupWindow localPopupWindow1 = new PopupWindow(localView1, i1, i1);
this.pwindow = localPopupWindow1;
this.pwindow.showAsDropDown(this.pbtn);
}
}
public int upOrdown() {
int i1 = -1;
if ((this.pwindow != null) && (this.pwindow.isShowing())) {
this.pwindow.dismiss();
i1 = 1;
}
return i1;
}
@Override
public void popAwindow(View paramView) {
upOrdown();
}
PopupWindow的布局文件layout_popup_calllog_type 如下 如下 如下.....
怎么也写不下了 我悲剧 只能写到下个文章中去了。
分享到:
相关推荐
这个"popupwindow的应用"主题涵盖了PopupWindow的各种应用场景和实现技巧。 首先,PopupWindow的基本用法包括创建PopupWindow实例、设置显示内容(如布局文件)、指定宽度和高度以及显示位置。例如,你可以通过以下...
在这个“探索PopupWindow-对话框风格的窗口(一)”主题中,我们将深入理解PopupWindow的基本用法,如何自定义其样式,以及在实际应用中的常见实践。 首先,PopupWindow并不是一个View,而是一个类,它继承自Window...
1. **创建 `PopupWindow` 对象**: 首先,我们需要创建一个 `PopupWindow` 对象,并设置其内容视图、宽度和高度。内容视图通常是一个自定义的布局,包含对话框中需要展示的按钮和其他元素。例如: ```java View ...
1. **PopupWindow的基本结构** PopupWindow主要由三部分组成:内容视图(ContentView)、背景(Background)和锚点(Anchor View)。内容视图是你想要展示的UI元素,如一个自定义布局;背景可以设置为透明或半透明...
1. **PopupWindow简介** PopupWindow是Android SDK提供的一种类,用于在屏幕任意位置显示一个浮动窗口。它可以包含任何View,并且可以设置为触摸外部时消失或点击某个View时消失。 2. **使用场景** - 底部弹出...
1. **创建PopupWindow实例**:首先,你需要创建一个PopupWindow对象,传入一个View作为内容视图、宽度和高度。例如: ```java View popupView = LayoutInflater.from(context).inflate(R.layout.popup_window, ...
在本资源"安卓popupwindow相关-仿微信popupwindow.zip"中,开发者提供了一种模仿微信应用内PopupWindow实现的方法。虽然由于文件数量众多,无法逐一验证每个文件的具体功能,但我们可以探讨一下PopupWindow的基本...
PopupWindow是Android开发中一种常用的UI组件,它用于在屏幕上的任意位置弹出一个窗口,通常用来显示一些临时的信息或者提供交互操作。...通过不断的实践和探索,开发者可以创造出更多富有创意的PopupWindow应用场景。
1. **创建布局**:首先,我们需要一个XML布局文件来定义PopupWindow的内容。这个布局通常会包含我们需要展示的按钮、文本或其他组件。同时,布局的根元素应该有一个背景颜色属性,设为灰色,例如`android:background...
1. **PopupWindow的基本概念** PopupWindow是Android SDK中的一个类,它可以显示一个浮动的窗口,这个窗口可以包含任何View。它不同于Dialog,Dialog是系统级别的窗口,而PopupWindow是应用程序级别的,因此...
本项目实战以"手机卫士21"为主题,将着重讲解如何运行此类应用,并对其中的PopupWindow进行美化。PopupWindow是Android UI设计中一个重要的组件,用于创建弹出式窗口,常用于快捷操作或者辅助提示。 首先,让我们...
1. **样式定制**:通过修改PopupWindow的背景、边框、阴影等属性,使其与应用主题风格保持一致。这可以通过设置PopupWindow的背景资源,或者自定义布局中的样式来实现。 2. **动画效果**:为了增加用户交互体验,...
1. 创建PopupWindow实例:通过`new PopupWindow(view, width, height, flag)`构造函数来创建PopupWindow,其中`view`是你想要展示的布局,`width`和`height`分别是窗口的宽度和高度,`flag`可以设置一些附加属性,如...
1. 创建一个View对象,这将是PopupWindow的内容。 2. 初始化PopupWindow实例,传入内容视图、宽度和高度。 3. 设置PopupWindow的位置,通常使用showAtLocation()方法,需要传入一个父视图、对齐的Gravity和X、Y偏移...
在实际应用中,有时我们需要在一个PopupWindow中嵌套另一个PopupWindow,以实现更复杂的界面效果。然而,这种操作可能会遇到一些问题,比如"Unable to add window"的异常。下面我们将详细讨论如何处理这个异常,以及...
1. **初始化PopupWindow**:首先,你需要创建一个PopupWindow实例,通常需要指定内容视图、宽度和高度。内容视图可以是任何布局文件,例如一个LinearLayout或者ListView。 ```java View contentView = ...
本篇文章将详细介绍如何在Android应用中使用PopupWindow,并通过一个具体的案例来演示其基本用法。 首先,PopupWindow是Android SDK提供的一种轻量级的弹窗组件,相比Dialog,它的创建和显示更加灵活。PopupWindow...