web-dev-qa-db-ja.com

重力を使用してImageView内に画像を配置する:top

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

そして、私はこれをやりたい:

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

注意してください:imageviewには線形レイアウトの重心があります助けて

編集:これは私の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

XMLでscaleTypefitStartに設定します。

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

正しい答えであると言われているTerelの答えを確認してください。

レイアウト内の他の要素に応じて、ソリューションはFrameLayoutの代わりに別のレイアウト(つまり、ImageView)を使用し、ImageView実際の画像の代わりに、そのAndroid:layout_gravity="top"

6
bigstones

_ImageView.ScaleType.MATRIX_を使用し、ImageView.setImageMatrix()を使用して画像マトリックスを設定できます。 Matrixは、Matrix.setRectToRect()メソッドを使用して取得できます。

5
Michael

属性を使用してみましたかAndroid:gravity = "top" ImageViewでAndroid:layout_gravityを使用していることがわかります。他の属性を使用してみてください。私の知る限り、「Android:layout_gravity」属性は親内の要素の重力を設定するために使用され、「Android:gravity」属性は要素のコンテンツの重力を設定します。 (私が間違っていれば誰かが私を修正します!= P hehe!)

3
Juan

RelativeLayoutを使用する方が簡単ではないでしょうか? Android:layout_alignParentTop="true"およびAndroid:layout_centerHorizontal="true"希望する効果を達成できます。

2
Mokus