Tiling images in android with ImageView in XML

2019-02-13 09:24发布

问题:

I am trying to get an image on the background to tile until the background is full.

My current code is:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <ImageView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:src="@drawable/cartoonclouds"
    android:contentDescription="@string/desc"
    android:tileMode="repeat" />
  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/hello" />
  </LinearLayout>
</RelativeLayout>

However that just makes the image covering (not tiled) bottom to top, but NOT left to right. What should I be doing?

Edit: Attempted the XML version:

<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:tileMode="repeat"
    android:src="@drawable/cartoonclouds" />

The main.xml could find the cartoonclouds in the SAME folder as that XML file, but could not find that XML file.

回答1:

First, place your image in a file like res/drawable/cloud.png. This makes it accessible to your app as @drawable/cloud. But it doesn't tile (yet).

Next, you should define a bitmap resource(1) with android:tileMode="repeat". For example, you can define it on mytileablebitmap.xml:

<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:tileMode="repeat" 
android:src="@drawable/cloud"/>

This is referencing your original tile image (drawable/cloud) and making a Drawable that knows how to tile itself to fill the available space.

Then, when you want to use the tiled background, use "@drawable/mytileablebitmap".

(1): http://developer.android.com/guide/topics/resources/drawable-resource.html