2017-06-09 14 views
0

InfoWindowレイアウトには少し問題があります。 レイアウトで親の幅に合わせてビューを設定しようとしていますが、左右の余白に若干の隙間ができます。 私はLinearLayout、RelativeLayout、ConstraintLayoutをルートビューとして試しましたが、同じ結果が得られます。androidのレイアウトでmatch_parentにビューを設定する

enter image description here

これは私がそれを膨らませる方法です:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
             xmlns:app="http://schemas.android.com/apk/res-auto" 
             xmlns:tools="http://schemas.android.com/tools" 
             android:layout_width="wrap_content" 
             android:layout_height="wrap_content" 
             android:layout_margin="0dp" 
             android:orientation="vertical" 
             android:padding="0dp"> 

<View 
    android:id="@+id/view" 
    android:layout_width="0dp" 
    android:layout_height="30dp" 
    android:layout_marginTop="0dp" 
    android:background="@color/login_button_color" 
    android:orientation="horizontal" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintTop_toTopOf="parent"> 

</View> 

<de.hdodenhof.circleimageview.CircleImageView 
    android:id="@+id/profile_image_info_view" 
    android:layout_width="70dp" 
    android:layout_height="70dp" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginBottom="10dp" 
    android:layout_marginLeft="80dp" 
    android:layout_marginRight="80dp" 
    android:layout_marginTop="45dp" 
    android:layout_weight="2" 
    android:src="@drawable/com_facebook_profile_picture_blank_portrait" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    app:layout_constraintVertical_bias="0.0" 
    tools:ignore="InefficientWeight" 
    android:layout_marginStart="80dp" 
    android:layout_marginEnd="80dp"/> 

<TextView 
    android:id="@+id/owner_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_margin="10dp" 
    android:layout_marginBottom="10dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_marginTop="8dp" 
    android:layout_weight="1" 
    android:gravity="center_horizontal" 
    android:text="@string/placeholder" 
    android:textColor="@android:color/black" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.503" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/profile_image_info_view" 
    app:layout_constraintVertical_bias="0.17000002" 
    android:layout_marginStart="8dp" 
    android:layout_marginEnd="8dp"/> 

<TextView 
    android:id="@+id/event_title_info_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginBottom="40dp" 
    android:layout_marginLeft="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_weight="1" 
    android:foregroundGravity="center_horizontal" 
    android:gravity="center_horizontal" 
    android:text="@string/placeholder" 
    android:textColor="@color/com_facebook_button_background_color" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.503" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toBottomOf="@+id/owner_name" 
    app:layout_constraintVertical_bias="0.92" 
    android:layout_marginStart="8dp" 
    android:layout_marginEnd="8dp"/> 

</android.support.constraint.ConstraintLayout> 

そしてスクリーンショット:

は、ここに私のXMLである

mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() 
        { 
         @Override 
         public View getInfoWindow(Marker marker) 
         { 
          return null; 
         } 

         @Override 
         public View getInfoContents(Marker marker) 
         { 
          View view = 
        getLayoutInflater().inflate(R.layout.fragment_info_view, 
        null); 
          profileImageInfoView = (CircleImageView) 
        view.findViewById(R.id.profile_image_info_view); 
          ownerName = 
        (TextView)view.findViewById(R.id.owner_name); 
          eventTitle = (TextView) 
        view.findViewById(R.id.event_title_info_view); 
          return view; 
         } 
        }); 

は、事前にありがとうございます!

+0

情報ウィンドウのコードを投稿してください。 –

+0

私はlayoutInflaterでそれを設定し、onMarkerClickで開くようにしましたが、まだ何もしませんでした。 –

+0

ビューで幅が0になるのはなぜですか? –

答えて

2

getInfoContents()メソッドで書いたコードは、getInfoWindow()メソッドに移動します。

getInfoContents()メソッドを使用すると、白い背景がいくつかのパディング付きで追加されますが、getInfoWindow()メソッドではそのようにはなりません。

更新されたコードは次のようになります。

mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
    @Override 
    public View getInfoWindow(Marker marker) { 
     View view = getLayoutInflater().inflate(R.layout.fragment_info_view, null); 
     profileImageInfoView = (CircleImageView) 
     view.findViewById(R.id.profile_image_info_view); 
     ownerName = (TextView)view.findViewById(R.id.owner_name); 
     eventTitle = (TextView)view.findViewById(R.id.event_title_info_view); 
     return view; 
    } 

    @Override 
    public View getInfoContents(Marker marker) { 
     return null; 
    } 
}); 
+0

うわー、それは完璧に働いた、ありがとう! –

0
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <View 
     android:id="@+id/view"  
     android:layout_width="0dp" 
     android:layout_height="30dp" 
     android:background="@color/colorAccent" 
     android:orientation="horizontal" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent"  
     app:layout_constraintTop_toTopOf="parent"> 

    </View> 
</android.support.constraint.ConstraintLayout> 

EDIT:

変更このdimens.xml

<dimen name="activity_horizontal_margin">0dp</dimen> 

<dimen name="activity_vertical_margin">0dp</dimen> 
+0

は悲しいことに何も変わっていません –

+0

私はそれがフラグメントとして機能すると信じていますが、私はMapFragmentのInfoWindowとして使用します。同じ結果が得られます –

+0

Mapfragmentコード。 – dustblue

0

であなたのConstraintLayoutの幅マッチ親を作ります。多分あなたのConstraintLayoutはその子から幅のサイズを取っています。

+0

同じ結果です。また、ビューの幅をmatch_parentに変更すると、InfoWindowはマップの幅に伸びますが、それでもギャップを持って –

+0

直線レイアウトを持つビューの子を変更して、幅のマッチを親にします。 –

関連する問題