Frage

Tatsächlich ist das Hauptlayout ein relatives Layout, in dem Praktikanten ein relatives Layout enthalten.Das Hauptziel besteht darin, dem inneren relativen Layout Bilder hinzuzufügen.

Ich habe das ausprobiert, aber es ist mir nicht gelungen.Das ist mein Code :

import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.app.Activity;
import android.graphics.Point;

public class MainActivity extends Activity {

    Display display;
    Point point;
    int width;
    int height;
    Animation up, down, right, left;
    RelativeLayout rl, rl2;


    Integer[] pics = { R.drawable.img1, R.drawable.img2,R.drawable.img3, R.drawable.img4,
            R.drawable.img5, R.drawable.img6,R.drawable.img7, R.drawable.img8,
            R.drawable.img9, R.drawable.img10,R.drawable.img11, R.drawable.img12,
            R.drawable.img13, R.drawable.img14,R.drawable.img15};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Init();

    }

    private void Init() {
        // TODO Auto-generated method stub


        rl = (RelativeLayout) findViewById(R.id.Rlayout);
        rl.setGravity(Gravity.CENTER);
        int x = 0;
        int y = 0;

        for(int i = 1 ; i<16 ; i++ ){
            ImageView img = new ImageView(this);
            img.setImageResource(pics[i-1]);
            int tempx = img.getWidth();
            int tempy = img.getHeight();
            rl.addView(img, x, y);
            x += tempx;
            if(i%4 == 0){
                x = 0;
                y += tempy;
            }

        }
        rl.bringToFront();

        }
}

Der XML-Code für das verwendete Layout lautet :

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:id="@+id/R1Layout">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:gravity="center"
        android:id="@+id/Rlayout" >
    </RelativeLayout>

</RelativeLayout>

Die Ausgabe, die ich bekomme, ist ein leerer Bildschirm.

Helfen Sie mir mit einer Lösung, wie die Bilder im inneren relativen Layout angezeigt werden

Danke im Voraus ,

War es hilfreich?

Lösung

Ich denke, Sie missverstehen, x und y sind nicht die Koordinaten, sind Breite bzw. Höhe in

rl.addView(img, x, y);

und Sie können die Größe der Bildansichten nicht mit bekommen:

int tempx = img.getWidth();
int tempy = img.getHeight(); 

Sie müssen einen Container verwenden, um Größe und Koordinaten für Ihre Bildansichten festzulegen:

 RelativeLayout.LayoutParams params;
                params = new RelativeLayout.LayoutParams(100, 100);             
                params.leftMargin = x;
                params.topMargin = y;
                rl.addView(img,params);

dies ist ein Beispiel dafür, wie es geht:

private void Init() {
    // TODO Auto-generated method stub

    int x = 0;
    int y = 0;
    rl = (RelativeLayout) findViewById(R.id.Rlayout);
    rl.setGravity(Gravity.CENTER);
      for(int i = 0 ; i<14 ; i++ ){
            ImageView img = new ImageView(this);
            img.setImageResource(pics[i]);
                //int tempx = img.getWidth();
            //int tempy = img.getHeight();           
            int tempx = 100;                
            int tempy = 100;
            //rl.addView(img, x, y);

            x += tempx;
            if(i%4 == 0){
                x = 0;
                y += tempy;
            }

            RelativeLayout.LayoutParams params;
            params = new RelativeLayout.LayoutParams(100, 100);             
            params.leftMargin = x;
            params.topMargin = y;
            rl.addView(img,params);



        }                       
    rl.bringToFront();

}

wie Rajesh empfehle ich auch die Verwendung eines Gridview statt RelativeLayout.

Siehe dieses Beispiel:

Rasteransicht und übermäßiger Platzbedarf

Andere Tipps

Um Bilder in das innere Relativelayout einzufügen, müssen Sie das ImageView-Objekt verwenden.Sie können es mit der AddView () -Methode ausführen, die Relativivelayout (durch Erbschaft von der ViewGroup-Klasse) zur Verfügung steht.Sie können es in Ihrer Tätigkeit wie folgt tun (Sie müssen entscheiden, wo Sie dies platzieren möchten):

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top