آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کپی کردن یک لایه با محتویات داخلش (Duplicate Layout)

امید  9 سال پیش  9 سال پیش
0 0

سلام دوستان

من یه LinearLayout دارم که توش یه ImageView هست و توسط کد زنی (Programmatically) تولیدش کردم و هیچ فایل xml نداره

حالا میخوام با کد زنی ازش کپی(Duplicate) بگیرم که محتویات داخلش هم باهاش کپی گرفته بشه

روشی برای این کار هست؟


سوال در پست سوم Update شد

 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Reza  9 سال پیش
0 0

سلام ، نیازی به کپی نیست . همونطور که لایه رو با کد زنی درست کردی و مثلا میگی :

 layout1.addView(btn1);
layout1.addView(txt1);
layout1.addView(edt1);

به همین روش این لایه رو در لایه Parrent خودش add کن :

 layout2.addView(layout1);

منظورت همینه ؟

0 0
خوب این درست، منم دقیقا همین کار رو کردم. ولی الان میخوام یکی دیگه دقیقا مثل layout1 درست کنم و توی layout2 ادد کنم (9 سال پیش)
0 0
با این تفاوت که دیگه نمیخوام دوباره layout1.addView(btn1) و ... رو بزنم (9 سال پیش)
0 0
دنبال راهیم که بشه یجا از layout1 کپی گرفت (9 سال پیش)
0 0
میشه layout1 رو در کلاس ارث بری شده از Application ، مثل G ، استاتیک تعریف کرد و در onCreate کلاس اصلی هر چی خواستین بهش اد کنید . حالا دیگه هر جایی میتونید اینو لایه در یک لایه دیگه اد کنید . (9 سال پیش)
پاسخ به سوال 
امید  9 سال پیش
0 0

سوالم رو واضح تر مطرح میکنم:

با استفاده از کد زیر من لایه ای رو ساختم و در کاستوم کنترل ادد کردم:



public class CustomControlextends LinearLayout{

LinearLayout
linearLayout = new LinearLayout(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
linearLayout.setLayoutParams(layoutParams);

ImageView imageView = new ImageView(this);
imageView.setLayoutParams(layoutParams);
imageView.setBackgroundResorce(R.drawable.test);

linearLayout.addView(imageView);


this.addView(linearLayout);
}

حالا با استفاده از کد زیر میتونم بهش دسترسی پیدا کنم و مشکل دسترسی ندارم:

    @Override
public boolean onTouch(final View view, MotionEvent event) {
LinearLayout linearLayout = (LinearLayout) this.
getChildAt(indexOfChild(view));
}

یا:

     @Override
public boolean onTouch(final View view, MotionEvent event) {
LinearLayout linearLayout = (LinearLayout) view
;
}

 و یا خیلی از روش های دیگه میشه به لایه ای که ساختم دسترسی پیدا کنم.

حالا میخوام از این لایه با محتویات داخلش کپی بگیریم (ِDuplicate)

این کار رو هم که میکنم کرش میکنه:

    public void test (View view){
LinearLayout linearLayout = (LinearLayout) view;
this.addView(linearLayout);
}

لطفا راهنمایی کنید

0 0
کسی جوابی نداره؟ (9 سال پیش)
0 0
نمیشه یه متد درست کنی که اون لایه و محتویات اون رو return کنه .؟ حالا جایی که میخوای استفاده کنی ازش . اون رو فراخوانی کنی (9 سال پیش)
0 0
تیکه آخر کدی که نوشتم همین کار رو میکنه. (9 سال پیش)
0 0
کسی جواب دیگه ای نداره؟ (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .