Android实现点击某个按钮指定位置弹出布局
程序员文章站
2022-06-28 16:03:28
本文实例为大家分享了android实现点击某个按钮指定位置弹出布局,供大家参考,具体内容如下package com.topcee.report.report; import android.app.a...
本文实例为大家分享了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<string> reportlist; private list<string> 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<string>(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<string>(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"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".report.homeactivity"> <linearlayout android:id="@+id/ll_list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/activity_home_btn_layout"> <listview android:id="@+id/lv_data" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@null"> </listview> </linearlayout> <view android:id="@+id/activity_home_bottom_line_layout" android:layout_above="@+id/activity_home_btn_layout" style="@style/style_row_line_view"/> <linearlayout android:id="@+id/activity_home_btn_layout" android:layout_width="match_parent" android:layout_height="50dp" android:layout_alignparentbottom="true"> <textview android:id="@+id/tv_report" style="@style/style_activity_home_text_view" android:layout_weight="1" android:clickable="true" android:background="@drawable/btn_pressed" android:text="报表"/> <!--<imageview android:layout_width="25dp" android:layout_height="match_parent" android:layout_gravity="center" android:layout_marginright="5dp" android:layout_marginbottom="3dp" android:clickable="true" android:background="@drawable/btn_pressed"/>--> <view style="@style/style_column_line_view"/> <textview android:id="@+id/tv_product" style="@style/style_activity_home_text_view" android:layout_weight="1" android:clickable="true" android:background="@drawable/btn_pressed" android:text="生产情况"/> <!--<imageview android:layout_width="25dp" android:layout_height="match_parent" android:layout_gravity="center" android:layout_marginright="5dp" android:layout_marginbottom="3dp" android:clickable="true" android:background="@drawable/btn_pressed"/>--> <view style="@style/style_column_line_view"/> <textview android:id="@+id/tv_company" style="@style/style_activity_home_text_view" android:layout_weight="1" android:text="关于" android:clickable="true" android:background="@drawable/btn_pressed"/> <!--<imageview android:layout_width="25dp" android:layout_height="match_parent" android:layout_gravity="center" android:layout_marginright="5dp" android:layout_marginbottom="3dp" android:clickable="true" android:background="@drawable/btn_pressed"/>--> </linearlayout> </relativelayout>
btn_pressed.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/triangle_bg_pressed" android:state_pressed="true"></item> <item android:drawable="@drawable/triangle_bg"></item> </selector>
triangle_bg.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/shape" android:left="-2dp" android:bottom="-2dp"> <!-- 长方形 --> <shape android:shape="rectangle"> <stroke android:color="#dfdfdf" android:width="1dp"/> <solid android:color="#dfdfdf"></solid> </shape> </item> <item android:id="@+id/shape_id"> <!-- 正三角 --> <rotate android:fromdegrees="50" android:todegrees="-50" android:pivotx="-50%" android:pivoty="100%"> <shape android:shape="rectangle"> <solid android:color="#dfdfdf"/> </shape> </rotate> </item> </layer-list>
triangle_bg_pressed.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/shape" android:left="-2dp" android:bottom="-2dp"> <!-- 长方形 --> <shape android:shape="rectangle"> <stroke android:color="#dfdfdf" android:width="1dp"/> <solid android:color="#dfdfdf"></solid> </shape> </item> <item android:id="@+id/shape_id"> <!-- 正三角 --> <rotate android:fromdegrees="50" android:todegrees="-50" android:pivotx="-50%" android:pivoty="100%"> <shape android:shape="rectangle"> <solid android:color="#dfdfdf"/> </shape> </rotate> </item> </layer-list>
这里本来是想在右下角显示一个小三角形的,不知道为啥不显示,给它单独拿出来设置宽度和高度就显示。希望有知道的给我解惑一下。大家知识共享。
popupwindow.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:background="@drawable/popupwindow_bg"> <listview android:id="@+id/lsvmore" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </linearlayout>
这是最终的效果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 详解SpringCloud-Alibaba-Seata分布式事务
下一篇: WPAN、WLAN、WMAN、WWAN、MANET、WSN、WMN、物联网、蓝牙、Zigbee、Wi-Fi、WiMax、RFID的概念
推荐阅读
-
基于Android实现点击某个按钮让菜单选项从按钮周围指定位置弹出
-
基于Android实现点击某个按钮让菜单选项从按钮周围指定位置弹出
-
Android开发实现popupWindow弹出窗口自定义布局与位置控制方法
-
Android实现输入法弹出时把布局顶上去和登录按钮顶上去的解决方法
-
android实现点击按钮切换不同的fragment布局
-
Android实现点击某个按钮指定位置弹出布局
-
php-一个页面上几个不同的按钮。怎么样实现点击某个按钮在相同的位置上下出现不同的表
-
Android实现输入法弹出时把布局顶上去和登录按钮顶上去的解决方法
-
android实现点击按钮切换不同的fragment布局
-
Android实现点击某个按钮指定位置弹出布局