إضافة مكونات إلى تخطيط عبر جافا في الروبوت

StackOverflow https://stackoverflow.com//questions/22023716

  •  21-12-2019
  •  | 
  •  

سؤال

في الواقع التخطيط الرئيسي هو تخطيط نسبي يحتوي المتدربون على تخطيط نسبي فيه.الهدف الرئيسي هو إضافة الصور إلى التخطيط النسبي الداخلي .

حاولت ذلك ولكن لم تنجح .هذا هو رمز بلدي :

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();

        }
}

رمز شمل للتخطيط المستخدم هو :

 <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>

الإخراج الذي أحصل عليه هو شاشة فارغة .

مساعدتي مع حل كيفية عرض الصور داخل التخطيط النسبي الداخلي

شكرا مقدما ,

هل كانت مفيدة؟

المحلول

أعتقد أنك سوء الفهم ، س و ص ليست الإحداثيات ، هي العرض والارتفاع على التوالي في

rl.addView(img, x, y);

وكنت غير قادر على الحصول على حجم إيماجيفيوس مع:

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

يجب عليك استخدام حاوية لتعيين الحجم والإحداثيات إلى إيماجيفيوس الخاص بك:

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

هذا مثال على كيفية القيام بذلك:

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();

}

مثل راجيش ، أوصي أيضا باستخدام Gridview بدلا من RelativeLayout.

انظر هذا المثال:

عرض الشبكة وحشو المساحة الزائدة

نصائح أخرى

لإدراج الصور في relativelayout الداخلية، تحتاج إلى استخدام كائن ImageView.يمكنك القيام بذلك باستخدام طريقة AddView () المتاحة ل Relativelayout (من خلال الميراث من فئة ViewGroup).يمكنك القيام بذلك على النحو التالي في نشاطك (عليك أن تقرر المكان الذي تريد وضعه):

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top