zoukankan      html  css  js  c++  java
  • Android PopupWindow显示位置和显示大小


    <?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="#DA4F30"
        android:cacheColorHint="#000000"
        android:orientation="vertical" >
    
        <ListView
            android:id="@+id/lv_dialog"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:cacheColorHint="#00000000"
            android:scrollbars="none"
            android:overScrollMode="never">
        </ListView>
    
    </LinearLayout>

    package com.example.showpop;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.drawable.BitmapDrawable;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.PopupWindow;
    
    public class MainActivity extends Activity {
    	private LinearLayout layout;
    	private ListView listView;
    	private PopupWindow popupWindow;
    	private String title[] = { "1", "2", "3", "4", "5" };
    	private  ImageView imageView;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
    		setContentView(R.layout.activity_main);
    		imageView=(ImageView) findViewById(R.id.imageview_above_more);
    		imageView.setOnClickListener(new OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				showPopupWindow(imageView);
    			}
    		});
    	}
    	public void showPopupWindow(View parent) {
    		//载入布局
    		layout = (LinearLayout) LayoutInflater.from(MainActivity.this).inflate(
    				R.layout.dialog, null);
    		//找到布局的控件
    		listView = (ListView) layout.findViewById(R.id.lv_dialog);
    		//设置适配器
    		listView.setAdapter(new ArrayAdapter<String>(MainActivity.this,
    				R.layout.text, R.id.tv_text, title));
    		// 实例化popupWindow
    		popupWindow = new PopupWindow(layout, 300,500);
    		//控制键盘能否够获得焦点
    		popupWindow.setFocusable(true);
    		//设置popupWindow弹出窗口的背景
    		popupWindow.setBackgroundDrawable(new BitmapDrawable(null,""));
    		WindowManager manager=(WindowManager) getSystemService(Context.WINDOW_SERVICE);
    		@SuppressWarnings("deprecation")
    		//获取xoff
    		int xpos=manager.getDefaultDisplay().getWidth()/2-popupWindow.getWidth()/2;
    		//xoff,yoff基于anchor的左下角进行偏移。

    popupWindow.showAsDropDown(parent,xpos, 0); //监听 listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?

    > arg0, View arg1, int arg2, long arg3) { //关闭popupWindow popupWindow.dismiss(); popupWindow = null; } }); } }

    源代码下载地址

  • 相关阅读:
    Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.
    Spring NoSuchBeanDefinitionException六大原因总结
    深入分析Spring 与 Spring MVC容器
    MyBatis mapper parameterType
    eclipse下的mybatis插件:MyBatipse
    javax.servlet-api 和 servlet-api 区别
    Spring中ClassPathXmlApplication与FileSystemXmlApplicationContext的区别
    dump总结
    操作系统基础知识
    JMM中的Happens-Before原则
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5172073.html
Copyright © 2011-2022 走看看