web-dev-qa-db-ja.com

Android相対レイアウトは、あるビューの中心を別のビューの右上隅に揃えます

私はRelativeLayoutの経験がありますが、提示された問題を解決する方法に出くわしたことはありません(回避したいマージン値のハードコーディングを除いて)。

私はRelativeLayoutで次の画像のようなものを作成しようとしています:

enter image description here

ボックスは独自のビューであり、オレンジ色の円を含むビューを、青いボックスを含むビューの右上隅の中央に配置したいと思います。

Android:alignTop="boxView"Android:alignRight="boxView"を試してみましたが、オレンジ色の円がボックス内に完全に収まりました。円がボックスの右上隅の上に中央揃えになるようにします。

誰かがRelativeLayoutでその結果を得る方法を知っていますか?オレンジ色のドットビューの場合、画面の端からマージンをハードコーディングする必要はありません。

28
FoamyGuy

このコードはあなたが探しているものを作成しますが、マージンを使用します。これが作成中の動的構造である場合、コードでマージンを設定できるようになりました。ご覧のとおり、負の余白を使用して右上の形状を青いボックスの外側に移動しました。これらは、移動しようとしている円の半分の高さである必要があります。これらすべてをコードで実行して、円を右上隅の中央に配置できます。

    <?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/linearLayout1"
            Android:layout_width="100dp"
            Android:layout_height="100dp"
            Android:layout_alignParentBottom="true"
            Android:layout_alignParentLeft="true"
            Android:background="#0000FF"
            Android:orientation="vertical" >
        </LinearLayout>

        <LinearLayout
            Android:layout_width="26dp"
            Android:layout_height="26dp"
            Android:layout_alignRight="@+id/linearLayout1"
            Android:layout_alignTop="@+id/linearLayout1"
            Android:layout_marginRight="-13dp"
            Android:layout_marginTop="-13dp"
            Android:background="#FF00FF"
            Android:orientation="vertical" >
        </LinearLayout>

    </RelativeLayout>
30
Bobbake4