ビューを にレンダリングしていますBitmap
。画面に収まるかどうかに基づいて、上部または下部にポインターが付いたバルーンが必要です。そのRelativeLayout
ためには、ポインターを部分的にバルーンの上に配置する必要があるため、を使用します。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<LinearLayout android:id="@+id/balloon_body"
android:layout_width="@dimen/pins_details_balloon_width"
android:layout_height="wrap_content"
android:layout_marginTop="-1dp"
android:layout_marginBottom="-1dp"
android:layout_below="@+id/pointer_top"
android:orientation="vertical"
>
<TextView android:id="@android:id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
/>
<TextView android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
/>
</LinearLayout>
<ImageView android:id="@id/pointer_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageView android:id="@+id/pointer_bottom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/balloon_body"
/>
</RelativeLayout>
このビューを膨らませてから、測定してレイアウトしたいので、ビットマップにレンダリングできます。
view.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
//view.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
//view.measure(View.MeasureSpec.makeMeasureSpec(3000, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(3000, View.MeasureSpec.AT_MOST));
view.layout(0, 0, s_View.getMeasuredWidth(), s_View.getMeasuredHeight());
このコードは、view.measure(...)でクラッシュし、Circular 依存関係は RelativeLayoutエラーに存在できません。別のLayoutParams (setLayoutParams(...) なしでは、メジャー (...)は null ポインター例外でクラッシュします)、別のView.MeasureSpec -s を試しましたが、成功しませんでした。最後の ImageView でandroid:layout_below="@id/balloon_body"を削除すると機能しますが、下部のポインターが上部にあります。
これらのポインターをバルーンの本体の上に配置する必要があるため、LinearLayout を使用することはできません。LinearLayout を使用すると、上部のポインターはその下になります。問題はどこにあり、どうすれば目的を達成できますか?