膨胀的视图不会受到xml的限制

时间:2015-03-04 15:44:26

标签: android android-layout google-maps-markers layout-inflater android-inflate

我正在尝试将自定义视图添加到Google地图Marker

  1. 我给布局充气。 < - 这是问题
  2. 然后将其转换为Bitmap。
  3. 生成标记。

  4. 所以我有布局home_marker_container.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="@dimen/home_map_marker_size"
        android:layout_height="@dimen/home_map_marker_size"
        android:background="@color/black"
        android:id="@+id/frame">
    
    
        <TextView
            android:layout_width="12dp"
            android:layout_height="12dp"
            android:text="5"
            android:textSize="10dp"
            android:background="@color/white"
            android:layout_centerInParent="true"
            android:gravity="center" />
    
    </RelativeLayout>
    

    我用

    夸大它
    ViewGroup home_marker_container = (ViewGroup) layoutInflater.inflate(R.layout.home_marker_container, null, false);
    


    然后将视图转换为位图:

    所以我通过Google Maps Android API Utility Library通过IconGenerator将其添加到标记中,基本上将View转换为Bitmap

    iconGenerator.setContentView(home_marker_container);
    iconGenerator.setContentPadding(horizontal_padding, vertical_padding, horizontal_padding, vertical_padding);
    Bitmap iconBitmap = iconGenerator.makeIcon();
    

    之后我意识到膨胀不能像我预期的那样有效,因为我在null中将ViewGroup root提供给inflate(int resource, ViewGroup root, boolean attachToRoot)参数,因此

    android:layout_width="@dimen/home_map_marker_size"
    android:layout_height="@dimen/home_map_marker_size"
    

    不是从xml中获取的。 为什么以及如何解决?

1 个答案:

答案 0 :(得分:-1)

由于没有根according to docs,因此我从inflate返回root,因此我手动将大小设置为root:

View markerView;
markerView = layoutInflater.inflate(R.layout.marker1, null);
markerView.setLayoutParams(new ViewGroup.LayoutParams(80, 80));;