代码改变世界

android在百度地图上怎样点击一下overlay,出现TextView或者imagebutton

2011-07-01 12:06  佳佳@——@  阅读(643)  评论(0编辑  收藏  举报

 这是一个困惑我很久的问题,我在最后采用了这个解决方案。

首先建在layout文件夹下建一个 foot_map.xml

内容如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:orientation="horizontal" android:background="@drawable/bg1"
    android:paddingLeft="5dip" android:paddingTop="5dip"
    android:paddingRight="5dip" android:paddingBottom="10dip">

    <TextView android:id="@+id/text1" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text=""
        android:gravity="center_vertical|center_horizontal"
        android:layout_marginLeft="0dip"
        android:layout_marginRight="0dip"
        android:paddingTop="0dip"
        />
       
</LinearLayout>

一个叫b1的背景图片

然后新建一个PopWin类

package com.nxt;

import android.app.Activity;
import android.graphics.Point;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;

import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

public class PopWin {
    public View view;
    Activity mpthis;//你的mapActivy
    PopupWindow mPopupWindow;
    int mheight;
    Point p;//在哪点出现这个xml里的内容
    String lable;//Textview里的内容
    public static PopWin popwin;//自身的引用

    private PopWin(Activity pthis,Point point,String title) {
        mpthis = pthis;
        p=point;
        lable=title;
        mPopupWindow = null;
    }
public static PopWin getPopWin(Activity pthis,Point point,String title){
   
        popwin=new PopWin(pthis,point,title);
   
    return popwin;
}
    public void setY(int y) {
        mheight = y;
        Log.d("PopWin", "setY:" + mheight);
    }

    public void dismiss() {
        Log.d("PopWin", "dismiss");
        if (mPopupWindow != null) {
            mPopupWindow.dismiss();
            mPopupWindow = null;
            Log.d("PopWin", "dismiss ok");
        }
    }

   

    TextView tv = null;


    public void ShowWin() {
        dismiss();//清空一下状态
        View foot_popunwindwow = null;

        LayoutInflater LayoutInflater = (LayoutInflater) mpthis
                .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        foot_popunwindwow = LayoutInflater
                .inflate(R.layout.foot_map_view, null);

        mPopupWindow = new PopupWindow(foot_popunwindwow,
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        Log.d("PopWin", "" + mheight);
        mPopupWindow.showAtLocation(mpthis.findViewById(R.id.layout),//r.id.layout是你那个百度地图所在的xml的总的layout的id
                Gravity.LEFT | Gravity.TOP, p.x, p.y);//这个xml出现的位置.
        mPopupWindow.update();
        tv = (TextView) foot_popunwindwow.findViewById(R.id.text1);
        tv.setTextSize(10);
        tv.setText(lable);

        tv.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(mpthis, "text1", Toast.LENGTH_SHORT).show();
            }
        });

    }

}