如何在android中启动时创建PopupWindow?

时间:2012-03-03 20:44:34

标签: android android-dialog

可以使用 Dialog 类,但我不希望这样。相反,我希望它通过使用 PopupWindow 类来完成,该类在启动时弹出并在弹出窗口上显示一些消息。我很无奈,只是花了很多天才能得到它。希望我能在这里得到它。拜托,谢谢。如果你没有得到我想要的东西,也请看下面的片段。

 public class PopupActivity extends Activity implements OnClickListener {


LinearLayout ll = new LinearLayout(this);
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(ll);

}

  protected void onStart()
 {
super.onStart();
final PopupWindow pw;
Button button = new Button(this);
button.setText("Hello");
pw = new PopupWindow(button, 245, 284, true);
button.setOnClickListener(new OnClickListener() {  
    @Override  
    public void onClick(View view) {  
        pw.dismiss();            
    }  
});

pw.showAsDropDown(ll, 10, -50);
} 

上面的代码给了我FORCE CLOSE:/帮助人..

1 个答案:

答案 0 :(得分:2)

这是您可以显示弹出窗口的方式。

<强> main.xml中

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

</LinearLayout>

<强> popup_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="10dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#FFFFFF">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:text="Test Pop-Up" />

</LinearLayout>

<强> main.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    new Handler().postDelayed(new Runnable() {
        public void run() {
            showPopup();
        }
    }, 100);
}


public void showPopup(){
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.popup_layout, null, false), 100, 100, true);
    pw.showAtLocation(findViewById(R.id.layoutTemp), Gravity.CENTER, 0, 0);
}

这个想法是你的活动加载后会显示你的弹出窗口,否则会产生异常无法添加窗口 - 令牌null无效;你的活动在运行吗?。除非你在点击按钮上显示弹出窗口,这就是我在延迟100毫秒后显示它的原因(这几乎是不可察觉的)。