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();
}
});
}
}