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

اضافه کردن لایه در editText

امید شریف مهر  4 سال پیش  4 سال پیش
+1 0

سلام بر اساتید حوضه اندروید استودیو جاوا --- این اولین سوالم در این انجمن است باشد که باسخی دریافت کنم و باسخ های زیادی بدهم

در تصویر ضمیمه شده این سوال (حتما تصویر مشاهده کنید) برنامه Note سامسونگ مشاهده میکنید که در ان ابتدا متنی نوشته شده سبس تصویری از گالری انتخاب مجدد متنی نوشته شده سبس صدایی ظبط و نمایش داده شده....

 دقیقا منم میخوام همینکارو کنم یعنی هر موقع خواستم با زدن فلان باتن یک لایه یا ویو نمایش داده شه(صرفا مشکلم نمایش نیست)

کارهایی که تا به الان کردم این بوده که با  خط کد زیر لایه پخش صدارو اضافه کردم به لایه اصلی

getLayoutInflater().inflate(R.layout.audio_layout, mainLayout);


مشکل اینجاست اونجایی که میخوام قرار نمیگیره میره بالای صفحه ظاهر میشه
در ضمن چیزی که متوجه شدم و باید انجام شه اینه که لایه صدا یا تصویر باید داخل editText قرار بگیره تا مجدد زیرش بشه متن بعدی نوشت

سوال اصلی ***** میخوام بدونم راهی وجود داره بشه فلان layout داخل editText و زیر اخرین متن نوشته شده اضافه کرد؟ چون به نظرم طبق عکس برنامه note سامسونگ همین کارو میکنه و لایه عکس یا صدا جزیی از editText هست.

ممنون میشم راهنمایی کنید .

 برای این سوال 2 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Criss  4 سال پیش
+3 0

 پاسخ صحیح

نیازی به استفاده از getLayoutInflater نیست !

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

 LinerLayout layout = new LinearLayout(this);
layout.gravity(Gravity.CENTER);
Button btn = new Button(this);
btn.setText("BTN");
layout.addview(btn);
setContentView(layout);

اگر نیاز داشته باشید ترتیب قرار گیری یک VIEW در انتها نباشه میتونید برای متد addView یک مقدار index هم اضافه کنید مثلا 0 همیشه View رو در ابتدا قرار میده و این عدد نباید از تعداد Child های موجود در یک لایه بیشتر باشه ، اینکه شما تصور میکنید باید view شما در داخل editText قرار بگیره اشتباهه ، درواقع editText  شما باید از قبل درون یک لایه وجود داشته باشید و بعدا لایه ایی که قراره اضافه بشه ، بیاد و در این لایه بشینه

0 0
خیلی متشکرم از پاسختون متوجه منظورتون شدم الان نکته اینجاست نمیخوام بسازم میخوام لایه ای از قبل ساخته شده استفاده کنم برای همین طبق راهنمایی که کردین از کد های زیر استفاده کردم و با موفقیت لایه مورد نظرم اضافه شد ` LayoutInflater inflater = LayoutInflater.from(getActivity()); View inflatedLayout= inflater.inflate(R.layout.audio_layout, null, false); desNoteLinear.addView(inflatedLayout); ` در حال حاضر مشکل اینجاست این لایه ای که اضافه کردم دارای یک button و seekbar میخوام بدونم چجوری باید بهشون دسترسی و کنترلشون کنم با توجه به اینکه کل این عملیات در فرگمنت انجام میشه (4 سال پیش)
پاسخ به سوال 
Criss  4 سال پیش
+2 0

متد inflate یک View به شما میده از روی اون view.findViewByid کنید و View هایی که لازم دارید رو از درونش بگیرید

 View itemLayoutView = LayoutInflater.from(this).inflate(R.layout.adapter_home, null);

LinearLayout lytMain = (LinearLayout) itemLayoutView.findViewById(R.id.lytMain);
0 0
ممنونم.فقط یه نکته ای بنده الان یه لایه که اضافه میکنم دارای یک button و seekbar و editText فرض ۱۰ بار این‌ لایه اضافه شه مجموعا ۳۰ تا عنصر میشه (ممکن ۱۰۰ بار هم اضافه شه دست کاربر تعدادش) چجوری ID اختصاصی به هرکدوم از این ۳۰ عنصر بدم که بعدا مثال بتونم text فلان editText دخیره کنم یا رو فلان button کلیک شد فلان عمل انجام شه... (4 سال پیش)
+1 0
نیازی به تعریف ایدی اختصاصی نیست، عملیاتی که میخواید رو توی همون متد روی هر View انجام بدید ، شما متدی رو مینویسید که یکبار View شما رو میگیره و روی View ها با کلیک شدن اطلاعات مورد نظر رو ذخیره میکنه حالا این متد برای هر تعداد که تکرار بشه به درستی کار میکنه (4 سال پیش)

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