Проблема в том, что я не могу щелкнуть по URL-адресу «www.news.com», отображаемому на andoid map v2 внутри пользовательского содержимого маркера. В файле макета XML У меня есть:Назначить прослушиватель кликов в информационном окне, не удается перейти на веб-страницу Google Maps V2
<TextView
android:id="@+id/web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:background="#ADD8E6"
android:text="www.google.gr"
android:linksClickable="true"/>
В Java файл активности у меня есть:
mMap.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker marker) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker marker) {
// Getting view from the layout file info_window_layout
View v = getLayoutInflater().inflate(R.layout.infowindow_layout, null);
TextView tvTitle = (TextView) v.findViewById(R.id.title);
tvTitle.setText(marker.getTitle());
TextView tvSnippet = (TextView) v.findViewById(R.id.snippet);
tvSnippet.setText(marker.getSnippet());
// URL
final TextView tvURL =(TextView) v.findViewById(R.id.web);
tvURL.setText("www.news.com");
Linkify.addLinks(tvURL, Linkify.WEB_URLS);
// URL
Ссылка правильно показывает синим цветом и подчеркнуть, но я нашел его просто мертвой ссылке. Ничего не происходит, если мы попытаемся щелкнуть его. Что мне нужно сделать, чтобы активировать ссылку?
Новый код вставляется в Java файл:
mMap.setInfoWindowAdapter(new InfoWindowAdapter() {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker marker) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker marker) {
// Getting view from the layout file info_window_layout
View v = getLayoutInflater().inflate(R.layout.infowindow_layout, null);
TextView tvTitle = (TextView) v.findViewById(R.id.title);
tvTitle.setText(marker.getTitle());
TextView tvSnippet = (TextView) v.findViewById(R.id.snippet);
tvSnippet.setText(marker.getSnippet());
// URL
final TextView tvWeb =(TextView) v.findViewById(R.id.web);
tvWeb.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.news.com"));
startActivity(viewIntent);
}
});
XML используется тот же:
<TextView
android:id="@+id/web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:background="#ADD8E6"
android:text="www.news.com"
android:linksClickable="true"/>
Еще проблема ссылка exists..URL не активен, я не могу открыть браузер.
Теперь URL-адрес открывается в мобильный браузер, когда я нажимаю на пользовательскую инфо-позицию.
mMap.addMarker(new MarkerOptions().position(new LatLng(39.686286, 19.838443)).title("Hi").snippet("Name, Surname, phone: 1093595, website: www.news.com").icon(BitmapDescriptorFactory.fromResource(R.drawable.location_icon)));
mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.news.com"));
startActivity(viewIntent);
}
});
Но у меня есть около 300 маркеров, и для каждого маркера я хочу открыть отдельную ссылку URL. Как я могу это реализовать?
UPDATE КОД:
mMap.addMarker(new MarkerOptions().position(new LatLng(36.84449, 22.99999)).title("KALOGRIA").snippet("Name: Messinia \nSurname: Stoupa \nphone: +99999999 \nwebsite: http://www.news.com/").icon(BitmapDescriptorFactory.fromResource(R.drawable.location_icon)));
mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener()
{
@Override
public void onInfoWindowClick(Marker marker)
{
//String webUrl = marker.getSnippet();
String snippetStr = marker.getSnippet();
String webUrl = snippetStr.substring(snippetStr.lastIndexOf("website:") + 1);
Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(webUrl));
startActivity(viewIntent);
}
});
Hack для форсирования информационного окна вид живучести/интерактивности: https: //gist.github.com/corsair992/8313269 – corsair992