您的位置:首页 > 运维架构

弹出小窗口,PopupWindow的使用

2011-04-08 17:41 281 查看
在程序里弹出一个小窗口,像系统的MediaController一样,具体做法:先在mail.xml的layout布局里加一个id,这个到后面会用到的,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/linear"<!--这个一定要加-->
>


接着布局文件里写一个control.xml文件,里面放一些要显示的widget,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:background="#00000000"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
>
<ImageButton
android:id="@+id/sounddown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/sounddown"
/>

<TextView
android:id="@+id/textNow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="     "
/>
<SeekBar
android:id="@+id/seekbar"
android:layout_width="500dip"
android:layout_height="wrap_content"
android:max="10000"
/>
<TextView
android:id="@+id/textAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="     "
/>
<ImageButton
android:id="@+id/soundup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/soundup"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:background="#0000003D"
>

</LinearLayout>

</LinearLayout>


最后就是java文件,

public class MainActivity extends Activity {
/** Called when the activity is first created. */
private Button show;
public PopupWindow mPopupWindow;
private boolean boo=true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show = (Button) findViewById(R.id.button);
show.setOnClickListener(new Button.OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(boo){
boo=false;
check();
mPopupWindow.showAtLocation(findViewById(R.id.linear), Gravity.RIGHT|Gravity.BOTTOM, 0,0);
}else{
boo=true;
mPopupWindow.dismiss();
}

}});
}

private void check(){
if(mPopupWindow==null){
mPopupWindow=new PopupWindow(getLayoutInflater().inflate(R.layout.controler, null),LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
}
if(mPopupWindow.isShowing()){
mPopupWindow.dismiss();
}
}
}


如果要响应PopupWindow里的widget,可以用LayoutInflater过滤xml文件,再用View view=getLayoutInflater().inflate(resource, root);就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: