web-dev-qa-db-ja.com

ImageViewのパディングが機能しない

トップバーと画像を含む画面を作りたい。トップバーにはTextViewを使用し、画像にはImageViewを使用しています。画像ビューのみにパディングを設定したい。私のxmlは以下のとおりです。パディングアクションが機能していません。誰かが理由と何をすべきかを説明できますか?

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"   
    Android:background="@drawable/background" >

    <TextView Android:id="@+id/topBar"
        Android:layout_width="match_parent"
        Android:layout_height="50dp"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentTop="true"
        Android:text="@string/home"
        Android:textSize="20sp"
        Android:textColor="#ffffff"
        Android:textStyle="bold"
        Android:shadowColor="#000000"
        Android:shadowRadius="1"
        Android:shadowDy="-1" 
        Android:gravity="center"
        Android:background="@drawable/navBar"/>

    <ImageView Android:id="@+id/image"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"   
        Android:paddingLeft="10dp"
        Android:paddingTop="10dp"
        Android:paddingRight="10dp"
        Android:paddingBottom="10dp"
        Android:layout_below="@+id/topBar"        
        Android:background="@drawable/image"/>

</RelativeLayout>
14
CrazyLearner

paddingの代わりにlayout_marginを使用する必要があるため、次のようになります。

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"   
Android:background="@drawable/background" >

<TextView Android:id="@+id/topBar"
    Android:layout_width="match_parent"
    Android:layout_height="50dp"
    Android:layout_alignParentLeft="true"
    Android:layout_alignParentTop="true"
    Android:text="@string/home"
    Android:textSize="20sp"
    Android:textColor="#ffffff"
    Android:textStyle="bold"
    Android:shadowColor="#000000"
    Android:shadowRadius="1"
    Android:shadowDy="-1" 
    Android:gravity="center"
    Android:background="@drawable/navBar"/>

<ImageView Android:id="@+id/image"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"   
    Android:layout_marginLeft="10dp"
    Android:layout_marginTop="10dp"
    Android:layout_marginRight="10dp"
    Android:layout_marginBottom="10dp"
    Android:layout_below="@+id/topBar"        
    Android:background="@drawable/image"/>

使用する代わりに、すべての方向に1 layout_marginを指定できます。

Android:layout_marginLeft="10dp"
Android:layout_marginTop="10dp"
Android:layout_marginRight="10dp"
Android:layout_marginBottom="10dp"

使用できます:

Android:layout_margin="10dip"

これがあなたが探しているものであることを願っています。それ以外の場合はフィードバックをください;)

更新

cropToPadding も設定できます:

<ImageView 
...
   Android:cropToPadding="true"
   Android:padding="15dp"
   Android:scaleType="centerInside"  
...
17
Coderji

ImageViewで使用

Android:src="@drawable/image"

の代わりに

Android:background="@drawable/image"

srcタグはパディングを尊重しますが、backgroundタグはそうではありません。場合によっては、特に。クリック可能なアイコンでは、パディングはビューに属し、クリック領域が大きくなるため、パディングの代わりにlayout_marginを使用することはお勧めできません。

11
Nishanth

これに対する唯一の解決策は、imageviewを別のコンテナに追加することです。

 <FrameLayout
        Android:layout_width="40dp"
        Android:layout_height="40dp"
        Android:layout_gravity="center"
        Android:layout_marginRight="10dp"
        Android:padding="10dp" >

        <ImageView
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_gravity="center"
            Android:background="@drawable/ic_delete_blue" />
    </FrameLayout>
8
Boldijar Paul