当从单独的类调用 PopupWindow 方法时,如何从 xml 文件定义 PopupWindow 中的布局

2024-04-10

当从单独的类调用 PopupWindow 方法时,我希望能够从 xml 文件定义 PopupWindow 中的布局。下面的代码可以根据需要工作,除了布局是从 java 文件而不是 xml 文件中提取的。我不知道在这种情况下如何正确访问 xml 布局并在 PopupWindow 中实现,或者是否可能。感谢意见和具体建议。谢谢。

showPopup.java

public class showPopup {
Context ctx;
Button btnDismiss;

public showPopup(Context ctx){
    this.ctx = ctx;     
}

public void onCreateView(LayoutInflater layoutInflater, ViewGroup container) {
    View layout = layoutInflater.inflate(R.layout.popup_layout, null);   
    btnDismiss = (Button) layout.findViewById(R.id.btndismissxml);
}

public void goJoe(View parent){ 
    final PopupWindow popup = new PopupWindow(ctx);

    btnDismiss = new Button (ctx);
    btnDismiss.setText("Text is from showPopup.java");

    popup.setContentView(btnDismiss);
    popup.setWidth(400);
    popup.setHeight(580);
    popup.showAtLocation(parent, Gravity.CENTER_HORIZONTAL, 10, 10);        

    btnDismiss.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            popup.dismiss();    
        }
    });
  }
}

Tab3Fragment.java

public class Tab3Fragment extends Fragment implements OnClickListener{
Button btnPopup;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup containerGroup, Bundle savedInstanceState) {    
    View v = inflater.inflate(R.layout.tab3_fragment, containerGroup, false);   
    btnPopup = (Button)v.findViewById(R.id.btnPopupxml);
    btnPopup.setOnClickListener(this);
    return v;
}
//@Override
public void onViewCreated(View v) {
    btnPopup = (Button)v.findViewById(R.id.btnPopupxml);
    btnPopup.setOnClickListener(this);
}
@Override
public void onClick(View parent) {
    new showPopup(getActivity().getApplicationContext()).goJoe(parent); 
  }
}

popup_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" 
android:layout_height="fill_parent"
android:id="@+id/layout">

<Button android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_width="wrap_content" 
    android:id="@+id/btndismissxml"
    android:text="Text is from popup_layout.xml"></Button>
</RelativeLayout>

更新(1835 年,12 月 11 日):这是一个草稿弹出窗口。应用程序中将有几个服务用户可编辑的下拉字段。


Change showPopup像这样

public class showPopup {
Context ctx;
Button btnDismiss, btnSaveRecord, btnLastRecord;
EditText edSpeciesLookup,edSpeciesLookupRowid;
DBAdapter msdb;
SQLiteDatabase db;

public showPopup(Context ctx){
    this.ctx = ctx; 
    msdb = new DBAdapter(ctx,"gfda", null);     
    db = msdb.getWritableDatabase();
}

public void goJoe(View parent){ 
    LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View popUpView = inflater.inflate(R.layout.popup_layout, null, false);
    final PopupWindow popup = new PopupWindow(popUpView, 400,
                    580, true);         
    popup.setContentView(popUpView);
    btnDismiss = (Button) popUpView.
                    findViewById(R.id.btndismissxml);
    edSpeciesLookup = (EditText) popUpView.
                    findViewById(R.id.editspecieslookupxml);
    edSpeciesLookupRowid = (EditText) popUpView.
                    findViewById(R.id.editspecieslookuprowidxml);
    popup.showAtLocation(parent, Gravity.CENTER_HORIZONTAL, 10, 10);        

    btnDismiss.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            popup.dismiss();    
        }
    });

    btnSaveRecord = (Button) popUpView.findViewById(R.id.btnSaveRecordxml);
    btnSaveRecord.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {//SAVE
            String szSpecies = edSpeciesLookup.getText().toString();
        if(szSpecies.matches("")){//checks to see if species field is empty...
            ///nothing happens...
        }else{db.execSQL("INSERT INTO speciesLookupDb (species) VALUES ('"+szSpecies+"')");
            resetForm();
        }
    }
    });

    btnLastRecord=(Button)popUpView.findViewById(R.id.btnLastRecordxml);
    btnLastRecord.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Cursor c = db.rawQuery("SELECT * FROM speciesLookupDb WHERE _id = (SELECT MAX(_id) FROM speciesLookupDb)",null);
            if (c.moveToFirst()){////a record exists (table is not blank)           
                edSpeciesLookupRowid.setText(c.getString(0));
                edSpeciesLookup.setText(c.getString(1));            
            }else{//no record here...table is blank.        
            }
        }
    });
  }
}

如果你想解雇popup触摸屏幕上的任何位置时,您必须在之后添加这些行setContentView弹出窗口和之前showAtLocation

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                    R.drawable.any_drawable);
popup.setBackgroundDrawable(new BitmapDrawable(getResources(),
                    bitmap));
popup.setOutsideTouchable(true);
popup.setFocusable(true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当从单独的类调用 PopupWindow 方法时,如何从 xml 文件定义 PopupWindow 中的布局 的相关文章

  • 如何从一个活动中完成一系列开放的子活动?

    我正在尝试为我的应用程序制作一个退出按钮 无论如何 我能够跟踪我的应用程序中的所有活动实例 然后完成它们 但在某些情况下 仍有一些活动仍然存在 不知道怎么办 有没有什么方法可以杀死android中的特定应用程序 或者我可以通过任何其他方式退
  • 在代码中旋转按钮(或其中的文本)

    我必须通过编码随机旋转按钮 或里面的文本 它是相同的 API级别低于11是否有button setRotate x 好吧 看了一下 答案是 很复杂 您可以使用旧的动画框架旋转按钮 例如像这样 Button button Button fin
  • 编译后从字节代码中删除注释

    我们正在使用一个包含使用 JAXB 注释进行注释的 bean 的库 我们使用这些类的方式完全不依赖于 JAXB 换句话说 我们不需要 JAXB 也不依赖注释 但是 由于注释存在 它们最终会被处理注释的其他类引用 这要求我将 JAXB 捆绑到
  • BluetoothAdapter.getDefaultAdapter() 不返回 null

    这是我的第一篇文章 所以如果我做了一些愚蠢的事情 请告诉我 这个问题可能看起来与其他帖子类似 但或多或 少与我所看到的所有内容相反 关于该项目的事情 我正在开发 android 4 0 4 4 应用程序 我正在使用蓝牙 我正在运行 andr
  • Android 5.0 Lollipop 中屏幕固定关闭时如何收到通知?

    我有一个在后台运行的应用程序 并在手机上发生特定事件时启动活动 我发现在 Android 5 0 中 当用户使用另一个应用程序打开屏幕固定时 startActivity intent 调用将被完全忽略 我的应用程序不知道该活动尚未启动 因此
  • 如何在 Android 应用程序中单击按钮时打开 Gmail Compose?

    当我的 Android 应用程序中单击按钮时 我尝试打开 Gmail 撰写屏幕 我需要 Google 提供的 API 密钥吗 或者我需要在按钮 onClickListener 中做什么 任何形式的见解都非常值得赞赏 正如 JeffC 指出的
  • Android CursorAdapter、ListView 和后台线程

    我一直在开发的这个应用程序有包含数兆字节数据的数据库可供筛选 许多活动只是列表视图 通过数据库中的各个级别的数据下降 直到到达 文档 即从数据库中提取并显示在手机上的 HTML 我遇到的问题是 其中一些活动需要能够通过捕获击键并重新运行带有
  • 无法在云控制台中启用 Maps SDK for Android

    我在云控制台中启用适用于 Android 的 Maps SDK 时遇到此问题 https console cloud google com https console cloud google com 它会抛出以下错误 附截图 我收到错误消
  • 将图像保存到内部存储器并将出现在图库中

    我搜索了很多与我的问题相关的问题 是否有办法将图像存储在内存中并且它也应该出现在图库中 这是完全有可能的 我以前也这么做过 在将图像保存到内存 或称为应用程序文件夹等 之前 您最好设置Context MODE WORLDREADABLE 虽
  • android 多关键词搜索

    我的应用程序包含搜索功能 它将搜索数据库内的内容 我的搜索的弱点是 我只能使用一个标签进行搜索 例如我只能搜索 猫 它会返回我的数据库中包含 猫 一词的内容 因为我正在使用LIKE在 select 语句期间进行查询 如何使用多个标签进行搜索
  • Android 消费品:“已经拥有该商品”,但 inventory.hasPurchase() 为 false

    我被 Google In App v3 困住了 我测试了一次没有消费的购买 例如 当应用程序在购买和消费之间崩溃时 现在我找不到出路 如果我尝试再次购买 它会显示 您已经拥有该商品 但是当我测试所有权时 它说我不拥有它 Inventory
  • Android - 多次实例化一个片段?

    我正在创建一个在 ListView 中显示数据的应用程序 数据分为两种类型 热门 收藏夹 我有一个活动和两个片段 片段根据类别显示项目列表 我为此使用了 ListView 然后我有两个fragment layouts 它们在设计上完全相同
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • 如何知道用户是否在 Android 应用程序中输入了错误的密码(锁定屏幕)

    我正在开发一个 Android 应用程序 如果用户在 Android 锁定屏幕中输入错误的密码 则必须完成其中一项活动 例如 如果用户输入错误的密码 则会发送电子邮件 我将不胜感激任何帮助 提前致谢 Kshitij 锁屏在完全沙箱环境中运行
  • 截图显示黑色

    我正在拍摄快照并创建缩略图 然后共享此图像 但缩略图显示全黑 我使用了以下代码 Bitmap bitmap View v1 v getRootView v1 setDrawingCacheEnabled true bitmap Bitmap
  • 使用后退按钮启动 Activity

    我正在 Android 中开发一个应用程序 我正在寻找解决方案 有一个活动 例如 A1 通过单击按钮 用户可以转到另一个活动 例如 A2 现在 一旦用户完成 A2 活动 他就会单击后退按钮 返回到上一个活动 A1 这是众所周知的事实 A1此
  • 如何在 kotlin 中检查 lambda 空值

    在 Kotlin 中如何检查 lambda 是否为空 例如 我有这样的签名 onError Throwable gt Unit 我如何区分它的默认值是应用于主体还是应用于此函数的值 您无法测试 lambda 的主体是否为空 因此它不包含源代
  • SDK尚未初始化,请务必先调用FacebookSdk.sdkInitialize()

    我在实现 Facebook SDK 时遇到此错误 并且我tried https stackoverflow com questions 15490399 error inflating class com facebook widget l
  • Android Jasper 报告

    Jasper Reporting 可以集成到 Android 应用程序中吗 我正在尝试从 jrxml 文件生成 PDF CSV 文本和 XLS 报告 但是 我没有看到 Android SDK 支持 net sf jasperreports
  • 如何检查设备上是否安装了文本转语音 (TTS) 的特定语言数据?

    我正在创建一个使用文本转语音的应用程序 我希望用户能够离线使用它 因此我检查设备上是否安装了 TTS 数据 以下是执行此操作的代码 Check tts data is installed Intent checkTTSIntent new

随机推荐

  • C# 屏幕截图全窗口

    我正在尝试使用 NET Framework 编写一个控制台应用程序 我想截图我的屏幕 我已经使用过其他答案 如下所示 https stackoverflow com a 24879511 9457997 https stackoverflo
  • 在 32 位和 64 位 C# 世界中使用 System.Data.SQLite 的选项

    我了解为什么在 32 位和 64 位版本中提供 System Data SQLite dll 因此 我们不要纠缠于此 继续前进 由于采用这种方式 纯 C 开发似乎变得更加困难 需要做出 3 个选择 是只支持32位并强制有托管 编译 x86
  • jQuery - 如何编写“如果不等于”(与 == 相反)

    我需要反转以下代码 如果宽度不是 500px 如何使动画运行 image div not this each function if this css width 500px this animate width 250px 500 fun
  • 查询以比较带时间的日期和不带时间的日期 - python 使用 access db

    我需要帮助来创建查询来比较带时间的日期和不带时间的日期 我正在使用带有 access db pypyodbc 的 python 在数据库中 我有一个包含日期 时间 包括时间 的列 在Python中 我有一个日期时间对象 没有时间 我想编写一
  • 为页面创建 Like-Gate [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经创建了一个 Facebook 页面 我想为其添加一个所谓的 Like Gate 问题是该页面带有时间线 并且到目前为止我找到的每个教
  • Conda无法激活环境

    Microsoft Windows Version 6 1 7601 Copyright c 2009 Microsoft Corporation All rights reserved C Users gt conda env list
  • 具有多个鉴别器值的 Hibernate 子类

    您好 我有一个子类需要覆盖多个鉴别器值 就像是 DiscriminatorValue 值 ACT DNR ATT 会让我变得完美 我们有现有的数据 其中多个鉴别器可以映射到一个类 因为它们与我们的系统将视为同一事物的类型相似 您可以使用判别
  • jQuery 淡入/淡出 div 到不同的 div?

    当您单击链接或按钮时 是否可以让 div 淡出 然后在同一位置淡入具有不同内容的不同 div 显然会使用 fadeIn and fadeOut 函数 但我不确定所有代码会是什么样子 特别是定位 以及在同一页面上执行两次的能力 如果您想淡出一
  • 如果我的文件中有翻译,如何在 DSpace 中翻译或替换主题术语

    如果语言切换 我想翻译我正在维护的 DSPace 实例中 item view xsl 中显示的主题 MeSH 术语 以前我使用下面的代码 我将其添加到XSLUtils java类 来查找 Babelmesh 站点并动态翻译它 public
  • 从 groovy 方法调用顶级函数

    我认为这有一个简单的答案 但我的网络搜索找不到它 如果我有以下内容 ideone http ideone com HVR89L def f class C public h f x new C h 此操作失败并出现以下错误 No signa
  • 在 OS X 下将 ImageMagick 编译为 64 位?

    我正在尝试安装moddims http code google com p moddims 在 OS X 上 请参阅上一个问题 https stackoverflow com questions 1185106 how do i confi
  • 用于沿大矩阵对角线插入 2x2 矩阵的代码的向量化

    我正在尝试沿大矩阵 例如 10x10 的对角线对小矩阵 2x2 进行元素插入 添加重叠值 并且仅将小矩阵插入到可以完全放入大矩阵的位置 我已经使用 for 循环实现了这一点 但我很好奇该过程是否可以矢量化 function M TestDi
  • Laravel 自定义数据透视表关系和预加载?

    我在为我的一个项目创建架构 模型时遇到问题 希望在这里获得一些帮助 我目前有 3 个表 Accessories products 和数据透视表 Product accessory
  • 在 asp.net core 应用程序的调试窗口中显示 NLog 输出

    是否可以在 Visual Studio 2017 调试窗口中显示 NLog 或内置调试器 正在记录的内容 我已将 NLog 设置为输出到文件 但对于开发来说 能够在调试窗口中查看调试消息将非常方便 我可以看到有关如何使用控制台执行此操作的文
  • 获取div中的文本[重复]

    这个问题在这里已经有答案了 可能的重复 jquery 获取没有子文本的元素的文本 https stackoverflow com questions 11362085 jquery get text for element without
  • 如何在 Angular 2 中过滤具有多个复选框的范围滑块的结果?

    我正在尝试过滤给定数组 db 的结果 有三个过滤器 价格 持续时间和类别 我尝试使用 filter 方法来过滤结果 这是我尝试过的代码链接 https stackblitz com edit multiple filters file ap
  • 在 Javascript 文件中插入 PHP 变量值

    我有一个 JavaScript 文件 其中有一个硬编码的 BASEURL 变量 该值随后由文件中的其他函数使用 我希望动态设置此 url 值 这样我就不需要针对不同的安装手动更改它 是否可以将 PHP 变量值插入 JavaScript 文件
  • 宏和函数同名

    我有以下代码 define myfunc a b myfunc do a a do b b void myfunc int a int b do blah a b int main int x 6 y 7 myfunc x y return
  • 为什么具有单事务的 mysqldump 比不具有单事务的 mysqldump 更一致?

    我已经阅读了手册 其中提到每笔交易都会添加一个BEGIN在开始转储之前声明 有人可以用更容易理解的方式详细说明这一点吗 这是我读到的 该选项在从服务器转储数据之前发出 BEGIN SQL 语句 它仅对事务表 例如 InnoDB 和 BDB
  • 当从单独的类调用 PopupWindow 方法时,如何从 xml 文件定义 PopupWindow 中的布局

    当从单独的类调用 PopupWindow 方法时 我希望能够从 xml 文件定义 PopupWindow 中的布局 下面的代码可以根据需要工作 除了布局是从 java 文件而不是 xml 文件中提取的 我不知道在这种情况下如何正确访问 xm