web-dev-qa-db-fra.com

Positionnement d'une image à l'intérieur d'une ImageView avec gravité: haut

      ╔════════════════════════════════════════════════════════╗
      ║               Linear Layout  (Center)                  ║
      ║    ╔══════════════════════════════════════════════╗    ║   
      ║    ║ ImageView    ╔══════════════╗                ║    ║
      ║    ║              ║              ║    (Center)    ║    ║
      ║    ║              ║ Actual image ║                ║    ║
      ║    ║              ║              ║                ║    ║
      ║    ║              ║  (Center)    ║                ║    ║
      ║    ║              ║              ║                ║    ║
      ║    ║              ╚══════════════╝                ║    ║
      ║    ╚══════════════════════════════════════════════╝    ║ 
      ║                                                        ║
      ╚════════════════════════════════════════════════════════╝

Et je veux faire ça:

      ╔════════════════════════════════════════════════════════╗
      ║               Linear Layout  (Center)                  ║
      ║    ╔══════════════════════════════════════════════╗    ║   
      ║    ║ ImageView    ║              ║                ║    ║
      ║    ║              ║              ║    (Center)    ║    ║
      ║    ║              ║ Actual image ║                ║    ║
      ║    ║              ║              ║                ║    ║
      ║    ║              ║  (Top)       ║                ║    ║
      ║    ║              ║              ║                ║    ║
      ║    ║              ╚══════════════╝                ║    ║
      ║    ╚══════════════════════════════════════════════╝    ║ 
      ║                                                        ║
      ╚════════════════════════════════════════════════════════╝

Notez que: imageview a un centre de gravité avec une disposition linéaire Je veux que l'image dans l'imageview ait un sommet de gravité, j'essaie de définir la gravité: haut, mais rien ne change. Aidez moi

Edit: c'est mon xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical" Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" Android:background="@color/all_white">
    <LinearLayout Android:id="@+id/title_bar" style="@style/TitleBar">
        <TextView Android:layout_width="wrap_content" 
            Android:id="@+id/tv_printweb"
            Android:singleLine="true" 
            Android:ellipsize="end" 
            style="@style/ScreenTitleText" />
    </LinearLayout>
    <RelativeLayout Android:orientation="vertical"
        Android:layout_width="fill_parent" 
        Android:layout_height="fill_parent"
        Android:layout_below="@+id/tv_web_filename" 
        Android:layout_above="@+id/tv_web_page_num"
        Android:layout_weight="1" 
        Android:background="@color/background">
        <LinearLayout Android:id="@+id/ln_web_pre"
            Android:layout_width="30dp" 
            Android:layout_height="fill_parent"
            Android:layout_alignParentLeft="true" 
            Android:gravity="center">
            <Button Android:id="@+id/btn_web_pre" 
                Android:layout_width="40dp"
                Android:layout_height="120dp" 
                Android:background="@drawable/bt_left"
                />
        </LinearLayout>
        <LinearLayout Android:id="@+id/ln_web_zoomview"
            Android:layout_width="fill_parent" 
            Android:layout_height="fill_parent"
            Android:background="@color/all_white" 
            Android:orientation="vertical"
            Android:gravity="center" 
            Android:layout_centerInParent="true">
            <ImageView Android:id="@+id/web_zoomview"
                Android:layout_width="fill_parent" 
                Android:layout_height="wrap_content"
                Android:background="@color/all_white" 
                Android:layout_gravity="top"
                />

        </LinearLayout>
        <LinearLayout Android:id="@+id/llCircle"
                Android:layout_height="fill_parent" 
                Android:layout_width="fill_parent"
                Android:layout_marginRight="40dp" 
                Android:layout_marginLeft="40dp" 
                Android:layout_marginBottom="25dp" 
                Android:layout_marginTop="25dp">
        </LinearLayout>
        <LinearLayout Android:id="@+id/ln_web_next"
            Android:layout_width="30dp" 
            Android:layout_height="fill_parent"
            Android:layout_alignParentRight="true" 
            Android:gravity="center">
            <Button Android:id="@+id/btn_web_next" 
                Android:layout_width="40dp"
                Android:layout_height="120dp" 
                Android:background="@drawable/bt_right_1"
                />
        </LinearLayout>
        <RelativeLayout Android:id="@+id/pagebar_web_top"
            Android:layout_width="fill_parent" 
            Android:layout_height="30dp"
            Android:layout_alignParentTop="true" 
            Android:gravity="center_vertical"
            Android:paddingLeft="10dip" 
            Android:paddingRight="10dip">
            <TextView Android:id="@+id/tv_web_page_size"
                Android:layout_width="wrap_content" 
                Android:layout_height="wrap_content"
                Android:layout_alignParentRight="true" 
                Android:gravity="center"
                Android:text="Paper Size" 
                Android:textColor="@color/all_black"
                Android:textStyle="bold" 
                Android:background="@drawable/paper_border" />
        </RelativeLayout>

        <RelativeLayout Android:id="@+id/web_pagebar"
            Android:layout_width="fill_parent" 
            Android:layout_height="50dp"
            Android:layout_alignParentBottom="true" 
            Android:gravity="left"
            Android:paddingLeft="10dip" 
            Android:paddingRight="10dip">
            <TextView Android:id="@+id/tv_page_num"
                Android:layout_width="wrap_content" 
                Android:layout_height="wrap_content"
                Android:layout_centerVertical="true" 
                Android:gravity="center"
                Android:text="1/1" 
                Android:textColor="@color/all_black"
                Android:textStyle="bold" 
                Android:background="@drawable/paper_border" />
            <Button Android:id="@+id/btn_web_orientation"
                Android:layout_width="50dp" 
                Android:layout_height="50dp"
                Android:layout_alignParentRight="true" 
                Android:background="@drawable/rotate_l" />
        </RelativeLayout>

    </RelativeLayout>
    <LinearLayout Android:gravity="right|center_horizontal"
        Android:id="@+id/toolbar" 
        style="@style/FunctionBar">
        <Button Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" 
            Android:id="@+id/btn_web_print"
            style="@style/FunctionButton" 
            Android:text="@string/str_print" />
    </LinearLayout>
</LinearLayout>
36
Nam Vu

Définissez scaleType sur fitStart dans votre XML:

<ImageView
    Android:id="@+id/ivMap"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:scaleType="fitStart" >
</ImageView>
90
Terel

Veuillez vérifier la réponse de Terel, qui serait la bonne réponse.

Selon ce qui se trouve d'autre dans la mise en page, une solution pourrait être d'utiliser une autre mise en page (c'est-à-dire une FrameLayout qui est plutôt légère) à la place de la ImageView, et d'avoir la ImageView à la place de l'image réelle, avec son Android:layout_gravity="top".

6
bigstones

Vous pouvez utiliser ImageView.ScaleType.MATRIX Et définir la matrice d'image à l'aide de ImageView.setImageMatrix(). Matrix peut être obtenu en utilisant la méthode Matrix.setRectToRect().

5
Michael

Ne serait-il pas plus facile d'utiliser un RelativeLayout? Avec Android:layout_alignParentTop="true" et Android:layout_centerHorizontal="true" vous pouvez obtenir l'effet souhaité.

2
Mokus