إضافة مكونات إلى تخطيط عبر جافا في الروبوت
-
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.