web-dev-qa-db-ja.com

ImageViewの周囲の不要なパディング

すべてのアクティビティ/ビューにヘッダーグラフィックを含める必要があります。ヘッダーのあるファイルはheader.xmlと呼ばれます。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:layout_width="fill_parent" 
  Android:layout_height="wrap_content"
  Android:background="#0000FF" 
  Android:padding="0dip">

  <ImageView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:src="@drawable/header"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="0dip"
    Android:layout_marginTop="0dip"
    Android:layout_marginBottom="0dip"
    Android:padding="0dip"
    Android:paddingTop="0dip"
    Android:paddingBottom="0dip"
    Android:layout_gravity="fill"
    Android:background="#00FF00"
    />
</FrameLayout>

Android:background="#00FF00"(緑色)に注意してください。これは単なる視覚化の目的です。

次のように、ビューにそれらを含めます。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:layout_width="fill_parent"
  Android:layout_height="fill_parent"
  Android:orientation="vertical"
  style="@style/white_background">

  <include layout="@layout/header" />
  (...)

したがって、実際に試してみると、結果は左の画像のように見えます(右)。

note the green border

(1)これ-オレンジ-部分は問題のimage/ImageViewです
(2)愛されていない緑のボーダー。注:通常、緑色の領域は透明になります-backgroundを設定したため、緑色になります。

上部の画像の周りの緑の境界線に注意してください。 ImageViewの一部であり、なぜ存在するのか、どうすれば削除できるのかわかりません。すべてのパディングとマージンを0に設定します(ただし、それらを省略しても結果は同じです)。画像は480x64pxのjpeg *であり、res/drawableに配置します(drawable-Xdpiのいずれにもありません)。

(* jpeg。古いpngガンマの問題に出会ったようです。最初は、緑の境界線を画像と同じオレンジにし、色が一致しないようにして問題を回避しました。)

Htc desire/2.2/Build 2.33.163.1およびエミュレータで試してみました。また、#Android-devで問題を誰かに説明しました。彼女は問題を再現できましたが、説明もありませんでした。ビルドターゲットは1.6です。

@tehgooseを更新します。このコードは、まったく同じ上+下のパディング結果を生成します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:layout_width="fill_parent"
  Android:layout_height="fill_parent"
  Android:orientation="vertical"
  style="@style/white_background">

  <!-- <include layout="@layout/header" />  -->

  <ImageView
    Android:src="@drawable/header"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:background="#00FF00"
    Android:layout_weight="0"
    />

  <LinearLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical"
    Android:padding="8dip"
    Android:layout_weight="1">

    (... rest of the elements)

  </LinearLayout>
</LinearLayout>
139
stefs

最後に!

<ImageView
  (...)
  Android:adjustViewBounds="true" />

adjustViewbounds属性 はトリックを行いました:

ImageViewの境界を調整してそのドロアブルのアスペクト比を保持する場合は、これをtrueに設定します。

私はつまずいた ここで 。ご協力いただきありがとうございます!

423
stefs
Android:scaleType="fitXY"

わたしにはできる。

37
fullMoon

画像のアスペクト比に関係しています。デフォルトでは、システムは画像ソースの元のアスペクト比を保持します。ほとんどの場合、レイアウトまたはレイアウトで指定された寸法と正確には一致しません。したがって、

  1. 指定したレイアウトに合うように画像のサイズを変更するか、
  2. Android:scaleTypeを使用して、画像に合わせます。たとえば、Android:scaleType="fitXY"を指定できます
3
Nazar Merza

Androidは元のアスペクト比を取得しようとするため、これらの余分なパディングは自動生成されます。以下を試してください

scaletype = "fitCenter"
Android:adjustViewBounds="true"
Android:layout_height="wrap_content"
0
Las Lemieux

imageview xmlでこのAndroid:scaleType = "fitXY"を使用します

0
Gaurav Pandit
Android:layout_height="wrap_content"

「fill_parent」に変更する必要があります

また、画像を拡大縮小する必要があるかもしれませんので、それが入っているフレームレイアウトを埋めるのに適切な比率になります。

フレームレイアウトが必要な理由がまったくわかりません。とにかく、あなたの画像はただ画面いっぱいになります。

編集:はい、申し訳ありませんが、xmlはimageviewの高さです。

0
NotACleverMan

specific height to imageView say 50dp or 40dpadjust image to make green borderを消すことができます。

卵:Android:layout_height="40dp"

0
Udaykiran