让背景可绘制小于视图
let background drawable be smaller than view
如何让或强制背景可绘制对象小于视图?假设我有一个 ImageView,用户可以点击它来拍照。我想将 ic_photo_camera 图标作为 ImageView 的背景。但我不希望图标拉伸以适应 ImageView 的大小:我希望图标保持其自身的大小。在不使用视图组合的情况下如何做到这一点?而只是一种观点?例如我可以使用一个 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>
你好,能不能给个你想展示的图片,我有点看不懂你说的。我尝试你可以使用 imageView 的 scaleType 属性,它有 center,fixXY 等等。我很感激它可以帮助你。
是的,你可以。
<?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 的内容。 gravity 可以根据你的图像 aspectRatio 更改为 clip_vertical。
如果您想动态设置 "photo",您可以:
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);
如何让或强制背景可绘制对象小于视图?假设我有一个 ImageView,用户可以点击它来拍照。我想将 ic_photo_camera 图标作为 ImageView 的背景。但我不希望图标拉伸以适应 ImageView 的大小:我希望图标保持其自身的大小。在不使用视图组合的情况下如何做到这一点?而只是一种观点?例如我可以使用一个 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>
你好,能不能给个你想展示的图片,我有点看不懂你说的。我尝试你可以使用 imageView 的 scaleType 属性,它有 center,fixXY 等等。我很感激它可以帮助你。
是的,你可以。
<?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 的内容。 gravity 可以根据你的图像 aspectRatio 更改为 clip_vertical。
如果您想动态设置 "photo",您可以:
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);