eyalb
eyalb

Reputation: 3022

how to place an image over another one on android app?

how i can put im2 in the correct place

FrameLayout rv =(FrameLayout)findViewById(R.id.my_ph);


    ImageView im1 = new ImageView(this);
    im1.setBackgroundResource(R.drawable.lamp_on);
    im1.layout(100, 100,120, 120);

    rv.addView(im1);

my layout

<FrameLayout android:id="@+id/my_ph" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView  
android:id="@+id/image"
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@drawable/sketch" />
</FrameLayout>

i want that im1 will be on top of the ImageView in position x,y

Upvotes: 4

Views: 28349

Answers (5)

Daniel
Daniel

Reputation: 37061

Another way would be to use <layer-list with two (or more) <item android:drawable elements (no need to use the <bitmap> inside), like this:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/radio_button_unchecked_gray_16" />
    <item android:drawable="@drawable/close_gray_16" />
</layer-list>

Upvotes: 0

Saad Anwar
Saad Anwar

Reputation: 1

Use this make this xml in your drawble folder, you can add more images to it in the same way. they will all apear on top of each other.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<item>
    <bitmap android:src="@drawable/img1"
        android:gravity="center"
        />
</item>
<item>
    <bitmap android:src="@drawable/img2"
        android:gravity="center"
        />
</item>
</layer-list>

Upvotes: 0

eyalb
eyalb

Reputation: 3022

and the answer....

 RelativeLayout rv = (RelativeLayout) findViewById(R.id.my_ph);
 RelativeLayout.LayoutParams params;
 ImageButton im1 = new ImageButton(this);

 im1.setBackgroundResource(R.drawable.lamp);
 im1.setId(i);
 im1.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {
        TextView tx = (TextView) findViewById(R.id.textView1);
        tx.setText("lamp #" + v.getId());
     }
 });

 params = new RelativeLayout.LayoutParams(40, 40);
 params.leftMargin = x;
 params.topMargin = y;
 rv.addView(im1, params);

XML Layout:

 <RelativeLayout 
            android:id="@+id/my_ph"
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:gravity="bottom">
    <ImageView 
            android:id="@+id/image" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_alignParentTop="true"
            android:background="@drawable/map" />
    <TextView 
            android:id="@+id/textView1" 
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_below="@+id/image" 
            android:layout_alignParentLeft="true">
    </TextView>

 </RelativeLayout>

Upvotes: 2

Maxim
Maxim

Reputation: 3006

In layout add one more ImageView and align Top, Bottom, Right, Left to first one. Make it invisible;

<FrameLayout android:id="@+id/my_ph"    
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView  
    android:id="@+id/image"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/sketch" android:layout_alignParentTop="true"/>
<ImageView  
    android:id="@+id/image2"
    android:layout_width="fill_parent" 
    android:layout_height="fill_paren" 
    android:layout_alignTop="@id/image"
    android:layout_alignLeft="@id/image"
    android:layout_alignRight="@id/image"
    android:layout_alignBottomp="@id/image"
    android:visibility="INVISIBLE"/>
</FrameLayout>

Then in code:

ImageView image2 =(ImageView)findViewById(R.id.image2);
image2.setVisibility(View.VISIBLE);
image2.setImageResource(R.drawable.my_image);

Upvotes: 12

Dinesh Sharma
Dinesh Sharma

Reputation: 11571

Instead of using android:src in the imageView xml use android:background then just recieve it at the source java file then use the following code:

ImageView img=(ImageView)findViewById(R.id.image);
img.setBackgroundDrawable(getResource().getDrawable(R.drawable.lamp_on));

Hope this will work for you.

Upvotes: 1

Related Questions