本文实例为大家分享了Android实现点击某个按钮指定位置弹出布局,供大家参考,具体内容如下

package com.topcee.report.report; import android.app.Activity;import android.content.Context;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.PopupWindow;import android.widget.TextView; import com.topcee.report.R; import java.util.ArrayList;import java.util.List; public class HomeActivity extends Activity { private Context context; private List reportList; private List productList; private TextView tvReport; private TextView tvProduct; private TextView tvCompany; private String reportName = ""; private String productName = ""; private String companyName = ""; private ListView lvData; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_home);  context = HomeActivity.this;  initView(); } private void initView(){  lvData = findViewById(R.id.lv_data);  lvData.setOnItemClickListener(new AdapterView.OnItemClickListener() {   @Override   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {    }  });  tvReport = findViewById(R.id.tv_report);  tvProduct = findViewById(R.id.tv_product);  tvCompany = findViewById(R.id.tv_company);  tvReport.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    showReportDialog();   }  });  tvProduct.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    showProductDialog();   }  });  tvCompany.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {       }  }); }  /**  * 报表弹窗  */ private void showReportDialog(){  reportList = new ArrayList<>();  reportList.add("生产报表");  reportList.add("设备报表");  reportList.add("抛料率报表");  reportList.add("在线预警报表");  View view = LayoutInflater.from(context).inflate(R.layout.popupwindow, null);   // 为了演示效果,简单的设置了一些数据,实际中大家自己设置数据即可,相信大家都会。  ListView lsvMore = (ListView) view.findViewById(R.id.lsvMore);  lsvMore.setAdapter(new ArrayAdapter(context, android.R.layout.simple_list_item_1, reportList));   // 创建PopupWindow对象,指定宽度和高度  PopupWindow window = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);  window.setWidth(tvReport.getWidth());  // 设置动画//  window.setAnimationStyle(R.style.popup_window_anim);  // 设置背景颜色  window.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));  // 设置可以获取焦点  window.setFocusable(true);  // 设置可以触摸弹出框以外的区域  window.setOutsideTouchable(true);  // 更新popupwindow的状态  window.update();  // 以下拉的方式显示,并且可以设置显示的位置//  window.showAsDropDown(tvReport, 0, 20);  window.showAtLocation(tvReport, Gravity.LEFT | Gravity.BOTTOM, 0, 50);//这里的50是因为我底部按钮的高度是50  lsvMore.setOnItemClickListener(new AdapterView.OnItemClickListener() {   @Override   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {    if("生产报表".equals(reportName)){     }   }  }); }  /**  * 生产情况弹窗  */ private void showProductDialog(){  productList = new ArrayList<>();  productList.add("生产描述");  productList.add("生产进度");  productList.add("生产指标");  productList.add("异常信息");  View view = LayoutInflater.from(context).inflate(R.layout.popupwindow, null);   // 为了演示效果,简单的设置了一些数据,实际中大家自己设置数据即可,相信大家都会。  ListView lsvMore = view.findViewById(R.id.lsvMore);  lsvMore.setAdapter(new ArrayAdapter(context, android.R.layout.simple_list_item_1, productList));   // 创建PopupWindow对象,指定宽度和高度  PopupWindow window = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);  window.setWidth(tvProduct.getWidth());  // 设置动画//  window.setAnimationStyle(R.style.popup_window_anim);  // 设置背景颜色  window.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF")));  // 设置可以获取焦点  window.setFocusable(true);  // 设置可以触摸弹出框以外的区域  window.setOutsideTouchable(true);  // 更新popupwindow的状态  window.update();  // 以下拉的方式显示,并且可以设置显示的位置//  window.showAsDropDown(tvProduct, 0, 20);  window.showAtLocation(tvProduct, Gravity.CENTER | Gravity.BOTTOM, 0, 50);  lsvMore.setOnItemClickListener(new AdapterView.OnItemClickListener() {   @Override   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {    productName = productList.get(position);//获取点击的状态名字    }  }); }}

activity_home.xml

<?xml version="1.0" encoding="utf-8"?>                           

btn_pressed.xml

<?xml version="1.0" encoding="utf-8"?>  

triangle_bg.xml

<?xml version="1.0" encoding="utf-8"?>                                

triangle_bg_pressed.xml

<?xml version="1.0" encoding="utf-8"?>                                

这里本来是想在右下角显示一个小三角形的,不知道为啥不显示,给它单独拿出来设置宽度和高度就显示。希望有知道的给我解惑一下。大家知识共享。

popupwindow.xml

<?xml version="1.0" encoding="utf-8"?>  

这是最终的效果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. Android(安卓)常用代码片小结
  2. Android(安卓)webView 软键盘覆盖输入框,webView页面底部显示不全
  3. Android(安卓)获取View高度的4种方法
  4. Android(安卓)GridView设置条目的高度与宽度相等、GridView条目
  5. android获得屏幕高度和宽度、状态栏高度
  6. Android(安卓)得到手机的宽度和高度 Android(安卓)不同设备兼容
  7. Java中Textview 在XML中详细配置讲解
  8. Android组件TextView属性

随机推荐

  1. android获取gps坐标
  2. Android学习目录
  3. 安卓巴士Android开发神贴整理
  4. android 2.2 eclipse
  5. 【Android】Android(安卓)联系人数据库浅
  6. 改变Android中默认Dialog的样式
  7. Android设置振铃
  8. Android(安卓)Battery 分析
  9. Error generating final archive: Debug
  10. Android开发实践 网络通信 URL、URLConne