让背景drawable小于view

时间:2015-12-24 01:55:03

标签: android android-layout background-image drawable

如何让背景可绘制小于视图?假设我有一个用户点击拍摄照片的ImageView。我想将ic_photo_camera图标作为ImageView的背景。但我不希望图标伸展到适合ImageView的大小:我希望图标保持自己的大小。如何在不使用视图组合的情况下执行此操作?而只是一个观点?例如,我可以使用A RelativeLayout和两个ImageView来完成此任务。但我想知道是否只有一个ImageView的选项。

更新

我认为这和图片一样好:这就是现在。但我不想使用三种观点,如果可以,我想使用一种观点。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:background="#eeeeee"
    android:layout_height="match_parent">

    <RelativeLayout
        android:id="@+id/container"
        android:layout_width="250dp"
        android:layout_height="150dp"
        android:layout_centerHorizontal="true">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:scaleType="center"
            android:src="@drawable/ic_photo_camera_white_48dp" />

        <ImageView
            android:id="@+id/photo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerInParent="true"
            android:scaleType="centerCrop" />
    </RelativeLayout>

    <TextView
        android:id="@+id/label"
        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="wrap_content"
        android:layout_below="@+id/container"
        android:background="#FFFFFF"
        tools:text="This is the label to some image" />


</RelativeLayout>

enter image description here

2 个答案:

答案 0 :(得分:0)

嗨,你能展示一幅你想要展示的照片,我几乎不能理解你说的话。我尝试你可以使用imageView的scaleType属性,它有中心,fixXY等。我很感激它可以帮助你。

答案 1 :(得分:0)

是的,你可以。

<?xml version="1.0" encoding="utf-8"?>
<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="#eeeeee">

    <ImageView
        android:id="@+id/container"
        android:layout_width="250dp"
        android:layout_height="150dp"
        android:layout_centerInParent="true"
        android:scaleType="center"
        android:src="@drawable/ic_photo_camera_white_48dp"
        android:background="@drawable/bg"/>

    <TextView
        android:id="@+id/label"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/container"
        android:background="#FFFFFF"
        android:gravity="center"
        tools:text="This is the label to some image" />

</RelativeLayout>

并在res / drawable中创建bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="clip_horizontal"
    android:src="@drawable/photo" />

@ drawable / photo是你想用ID为“photo”的旧ImageView。可以根据图像aspectRatio将重力更改为clip_vertical。

如果你想动态设置“照片”,你可以:

    ImageView iv_container = (ImageView) findViewById(R.id.container);
    Drawable drawable = getResources().getDrawable(R.drawable.photo_2);
    ((BitmapDrawable)drawable).setGravity(Gravity.CLIP_HORIZONTAL);
    iv_container.setBackgroundDrawable(drawable);