如何在Android中使非XML弹出窗口出现在屏幕上
我创建了一个类,该类根据输入的参数生成PopupWindow。我相信这比为我的PopupWindow操作基于XML的内容更适合我的需要 创建窗口和它的内容似乎进展顺利——它实际上是让我还无法管理的内容出现在屏幕上。问题是,我还没有找到一个使用中的PopupWindow代码示例,它不依赖LayoutFlater函数将其放置在屏幕上。由于我的PopupWindow不是从XML文件生成的,所以我不能使用LayoutInflater将其放置在屏幕上 我还应该解释的是,我的PopupWindow生成类在它自己的文件中。i、 e.它不是活动文件的子类。我这样做是为了便于将自定义的PopupWindow类复制到将来可能开发的任何项目中 以下是我班级的基本布局:如何在Android中使非XML弹出窗口出现在屏幕上,android,visible,popupwindow,Android,Visible,Popupwindow,我创建了一个类,该类根据输入的参数生成PopupWindow。我相信这比为我的PopupWindow操作基于XML的内容更适合我的需要 创建窗口和它的内容似乎进展顺利——它实际上是让我还无法管理的内容出现在屏幕上。问题是,我还没有找到一个使用中的PopupWindow代码示例,它不依赖LayoutFlater函数将其放置在屏幕上。由于我的PopupWindow不是从XML文件生成的,所以我不能使用LayoutInflater将其放置在屏幕上 我还应该解释的是,我的PopupWindow生成类在它
class myPopup extends Object {
public myPopup(parameters){
ViewGroup winBody;
// "winbBody" will be the content of the PopupWindow.
// Code that fills and adjusts "winBody" based on the parameters goes here.
int width = //Determined by parameters.
int height = //Determined by parematers.
PopupWindow pw = new PopupWindow(winBody, width, height, true);
//This is as far as I seem to get before getting stuck.
}
}
我推测我应该以某种方式使用PopupWindow函数“showAtLocation”,但我不清楚我应该使用什么参数。有人能告诉我如何让我的弹出窗口出现在屏幕上吗?希望就在它的中心。:) 试试这样吧 您可以将整个弹出窗口定义为一个活动,只需清除其背景,使其看起来像一个弹出窗口:
<style name="MyTransparentPopup">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
</style>
我完全确定这个问题,但是您可以用java编程创建PopupWindow布局,这可能意味着您的窗口从调用到调用都是动态的,这或多或少就是上面的代码所做的。(在这个问题上,我没有提供完整的代码,因为它相当长,而且大部分与我的问题无关。)使用popupWindow的更新方法怎么样?“更新”似乎需要一个“视图”参数作为“锚”(我假设这意味着父“视图”对象,popupWindow将成为它的子对象。)我应该把什么价值放在那里?不确定:),可以调查一下,先试试我的帖子,也许会有用
public class PopupWindowActivity extends Activity {
PopupWindow popUp;
LinearLayout layout;
TextView tv;
LayoutParams params;
LinearLayout mainLayout;
Button but;
boolean click = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
popUp = new PopupWindow(this);
layout = new LinearLayout(this);
mainLayout = new LinearLayout(this);
tv = new TextView(this);
but = new Button(this);
but.setText("Show popup");
but.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (click) {
popUp.showAtLocation(mainLayout, Gravity.CENTER, 0, 0);
popUp.update(0, 0, 300, 80);
click = false;
} else {
popUp.dismiss();
click = true;
}
}
});
params = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
layout.setOrientation(LinearLayout.VERTICAL);
tv.setText("Hello popup");
layout.addView(tv, params);
popUp.setContentView(layout);
mainLayout.addView(but, params);
setContentView(mainLayout);
}
}