当前位置: 首页 > news >正文

[android] 练习PopupWindow实现对话框

练习使用Dialog实习对话框

package com.example.tsh;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;

public class MainActivity extends Activity {
    private Handler handler=new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Dialog实现对话框
        Dialog dialog=new Dialog(this,R.style.Theme_Tsh_Dialog);
        dialog.setContentView(R.layout.activity_two);
        dialog.show();
        
        
    }
}

styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    
    <!-- 自定义对话框主题 -->
    <style name="Theme.Tsh.Dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@null</item>
    </style>
</resources>

练习使用PopupWindow实现对话框

package com.example.tsh;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;

public class MainActivity extends Activity {
    private Handler handler=new Handler();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Dialog实现对话框
//        Dialog dialog=new Dialog(this,R.style.Theme_Tsh_Dialog);
//        dialog.setContentView(R.layout.activity_two);
//        dialog.show();
        
        //使用PopupWindow实现对话框
        Button dropDown=(Button) findViewById(R.id.bt_dropdown);
        dropDown.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                View anchor=View.inflate(MainActivity.this, R.layout.activity_two, null);
                final PopupWindow popupWindow=new PopupWindow(anchor, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,true);
                
                //点击空白隐藏
                popupWindow.setTouchable(true);
                popupWindow.setTouchInterceptor(new OnTouchListener() {
                    
                    @Override
                    public boolean onTouch(View arg0, MotionEvent arg1) {
                        popupWindow.dismiss();
                        return false;
                    }
                });
                popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher));
                popupWindow.showAsDropDown(arg0);
                
            }
        });
        
    }
}

activity_main.xml

<?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:orientation="vertical" >
    
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="第一个界面"/>
    <Button 
        android:id="@+id/bt_dropdown"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="显示下拉"
        />
</LinearLayout>

 

转载于:https://www.cnblogs.com/taoshihan/p/5697608.html

相关文章:

  • %@ page import=%的用法
  • Windows平台下Git服务器搭建
  • Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决
  • mysql 配置参考
  • 对集合中的对象进行排序,用collections.sort 到方法
  • jquery 遍历表格,需要表格中每个td的内容
  • Linux GPRS模块问题
  • Linux 学习之路
  • 每天一个linux命令(4):mkdir命令
  • UVA725 UVALive5362 Division
  • CentOS下搭建cacti监控
  • 分享磨砺营马剑威讲解-Android N中对java 8的支持
  • SQL数据库查询练习题(更正版)
  • [译]如何构建服务器端web组件,为何要构建?
  • [全文检索]Lucene基础入门.
  • create-react-app项目添加less配置
  • ES6语法详解(一)
  • ESLint简单操作
  • javascript 总结(常用工具类的封装)
  • Java-详解HashMap
  • learning koa2.x
  • MaxCompute访问TableStore(OTS) 数据
  • spring security oauth2 password授权模式
  • supervisor 永不挂掉的进程 安装以及使用
  • 阿里云Kubernetes容器服务上体验Knative
  • 笨办法学C 练习34:动态数组
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端面试总结(at, md)
  • 线性表及其算法(java实现)
  • 学习ES6 变量的解构赋值
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • mysql面试题分组并合并列
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​configparser --- 配置文件解析器​
  • ​如何防止网络攻击?
  • #控制台大学课堂点名问题_课堂随机点名
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (第二周)效能测试
  • (二)linux使用docker容器运行mysql
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (力扣题库)跳跃游戏II(c++)
  • (七)c52学习之旅-中断
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)详解PHP处理密码的几种方式
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • **CI中自动类加载的用法总结
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET CLR Hosting 简介
  • .NET 常见的偏门问题
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET框架
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...