2014-04-14 13 views
7

Harita üzerinde işaretçiler oluşturdum. Onlara tıkladığımda, özel bilgi pencereleri her zaman ekran kadar geniş.Google Haritalar'da özel InfoWindow genişliğini ayarla api v2

layout_width="200dp"'u ayarlamayı denedim, ancak bu yardımcı olmadı. Ben de snippetUi.setWidth(GetDipsFromPixel(200)); ayarlayarak TextView'lar genişliğini ayarlayabilirsiniz ama düzen hala geniş ekran kalır

view.setLayoutParams(new LayoutParams(GetDipsFromPixel(200), GetDipsFromPixel(300))); 

ayarlama çalıştı.

<?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="vertical" 
    android:background="#FFFFFF" 
    android:layout_marginLeft="30dp" 
    android:layout_marginRight="30dp" 
    android:padding="10dp" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:background="#FFFFFF" 
     android:gravity="center_vertical"> 

     <ImageView 
      android:id="@+id/worldmap_infowindow_profileimg" 
      android:layout_width="20dp" 
      android:layout_height="20dp" 
      android:src="@drawable/noimage" /> 

     <TextView 
      android:id="@+id/worldmap_infowindow_username" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="To do No.2." 
      android:textColor="#000000" 
      android:textSize="16sp" 
      android:textStyle="bold" 
      android:paddingLeft="5dp"/> 
    </LinearLayout> 

    <View android:id="@+id/separator" 
     android:background="#ababab" 
     android:layout_width = "fill_parent" 
     android:layout_marginTop="3dp" 
     android:layout_marginBottom="3dp" 
     android:layout_height="1dp"/> 

    <TextView 
     android:id="@+id/worldmap_infowindow_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="See the Giza Pyramids" 
     android:textColor="#000000" 
     android:textSize="16sp" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/worldmap_infowindow_details" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="It was fascinating! It's a shame that it was raining, though." 
     android:textColor="#000000" 
     android:textSize="14sp" 
     android:textStyle="normal" /> 

</LinearLayout> 

Sınıf:

private class CustomInfoWindowAdapter implements InfoWindowAdapter { 

     private View view; 

     public CustomInfoWindowAdapter() { 
      view = getLayoutInflater().inflate(R.layout.custom_infowindow, null); 
     } 

     @Override 
     public View getInfoContents(Marker marker) { 

      if (WorldMap.this.myMarker != null 
        && WorldMap.this.myMarker.isInfoWindowShown()) { 
       WorldMap.this.myMarker.hideInfoWindow(); 
       WorldMap.this.myMarker.showInfoWindow(); 
      } 
      return null; 
     } 

     @Override 
     public View getInfoWindow(final Marker marker) { 
      WorldMap.this.myMarker = marker; 


      final String title = marker.getTitle(); 
      final TextView titleUi = ((TextView) view.findViewById(R.id.worldmap_infowindow_name)); 
      if (title != null) { 
       titleUi.setText(title); 
      } else { 
       titleUi.setText(""); 
      } 

      final String snippet = marker.getSnippet(); 
      final TextView snippetUi = ((TextView) view.findViewById(R.id.worldmap_infowindow_details)); 
      if (snippet != null) { 
       snippetUi.setText(snippet); 
      } else { 
       snippetUi.setText(""); 
      } 

      return view; 
     } 
    } 

enter image description here

+0

bu yardımcı olacaktır etsin u http : //stackoverflow.com/questions/16711522/how-to-change-the-custom-infowidnow-shape-of-the-google-maps-api-v2/16712599#16712599 @erdomester – TheFlash

+0

Yardım aldı, teşekkürler. Ben sadece 'android: background = "@ drawable/bg_custominfowindow" 'u ekledim. Burada bg_custominfowindow, xml'de oluşturulmuş bir şekil. Lütfen bunu bir çözüm olarak ekleyin. – erdomester

+0

harika yardımcı oldu ... Kısa açıklama ile cevap ekleyeceğim. – TheFlash

cevap

5

Eğer sabit boyutlu (Yükseklik veya Genişlik) ile özel penceresini göstermek istiyorsanız o zaman çekilebilir hale ve XML bir arka plan olarak ayarlamak zorunda .

HERE cevabımı çözümle gönderdim. Nasıl çalıştığına bakabilirsiniz.

+0

Asıl gerçek çözüm arka plan olarak çizilebilir kullanmaktır. Layout_width belirtmek kendi başına yardımcı olmaz! – erdomester

+0

@erdomester Düzenlendi.Eğer herhangi bir düzeltme olursa beni haberdar edin. – TheFlash

+3

Bu doğru olamaz, çok sezgisel görünüyor. Eğer haklıysa o zaman çılgın bir uygulama. Grrrr, Google'ın en iyi programcıları işe aldığını sanıyordum, utanç onların geri kalanı gibi düşünmüyorlar. –

39

Temelde aynen bu şekilde, kökün altında düzeninin başka seviyesini olması gerekir: Benim durumumda

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="wrap_content" 
android:background="@android:color/transparent" 
android:layout_height="wrap_content"> 

<LinearLayout 
    android:layout_width="250dp" 
    android:layout_height="wrap_content" 
    android:background="@android:color/white" 
    android:orientation="horizontal"> 
    ... 
+5

Doğru cevap bu olmalı. –

+0

Birisi farklı boyutta ekranda çalışmak için çözüm istiyorsa, o zaman farklı değerden getirin. Dimen.xml – ArhatBaid

+0

Bu doğru cevap – Noman

1

, ben düzeni çocuğun birinin sabit bir genişlik belirleyin ve işe yaradı. Kök görünümün genişliğini ayarlarken neden çalışmadığını bilmiyorum. İşte bir örnek:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/white" 
    android:orientation="vertical" 
    android:padding="3dp"> 

    <ImageView 
     android:id="@+id/info_window_image" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:scaleType="fitXY" 
     android:src="@drawable/facebook"/> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:lines="1" 
     android:maxLines="1" 
     android:singleLine="true" 
     android:text="Free for All Soccer Game" 
     android:textColor="@color/blue" 
     android:textSize="@dimen/medium" /> 
</LinearLayout 

>

0
@Override 
public View getInfoWindow(Marker arg0) { 
    return null; 
} 

@Override 
public View getInfoContents(Marker arg0) { 
    View v = getActivity().getLayoutInflater().inflate(R.layout.custom_info_window, null); 
    v.setLayoutParams(new LinearLayout.LayoutParams(500,300)); 
} 
2

Sadece "wrap_content" ve istenen boyutta bir çocuk düzen ile üst düzen oluşturmak:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

    <!-- This layout defines the desired size --> 
    <LinearLayout 
     android:layout_width="240dp" 
     android:layout_height="320dp" 
     android:orientation="vertical"> 

     <!-- Your views here --> 

    </LinearLayout> 

</LinearLayout> 
İlgili konular