1. ホーム
  2. android

FrameLayoutのマージンが機能しない

2023-07-12 19:28:40

質問

私のレイアウト構造は次のようなものです。

LinearLayout
    FrameLayout
       ImageView
       ImageView
    FrameLayout
    TextView
LinearLayout

FrameLayoutの中にある2つのImageViewにマージンを設定しました。しかし、FrameLayoutのマージンは破棄され、画像は常に左上隅に設定されます。FrameLayoutからLinearLayoutに変更すると、マージンは正しく機能します。どのようにこれを処理するのですか?

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/inner1"
    >
        <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
        >

            <ImageView
             android:layout_width="24px" 
             android:layout_height="24px" 
             android:id="@+id/favicon"
             android:layout_marginLeft="50px"
             android:layout_marginTop="50px"
             android:layout_marginBottom="40px"
             android:layout_marginRight="70px"      

            />      
            <ImageView
             android:layout_width="52px" 
             android:layout_height="52px" 
             android:id="@+id/applefavicon" 
             android:layout_marginLeft="100px"
             android:layout_marginTop="100px"
             android:layout_marginBottom="100px"
             android:layout_marginRight="100px"              
            />

        </FrameLayout>  
            <TextView
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/title"                 
            android:layout_marginLeft="10px"        
            android:layout_marginTop="20px"
            android:textColor="#FFFFFF"  
            android:textSize = "15px"
            android:singleLine = "true"
            />

    </LinearLayout>

どのように解決するのですか?

私自身も同じ問題を抱えており、その際に気づいたのが layout_ のマージンを設定しても、ImageView のレイアウトの重力を設定するまで機能しないことに気づきました。 すなわち、android:layout_gravity="top" をXMLリソースファイル、またはコードから設定します。 FrameLayout.LayoutParams.gravity = Gravity.TOP; .