میشه یه توضیح مختصر درباره کدی که نوشتی بدید ؟
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
طریقه ایجاد یک Button در Activity بدون تعریف کردن آن در فایل XML ( حل شده)
مدیریت گفتگو
آخرین تغییر: 11 سال پیش
سلام
چطوری میشه یک دکمه در اکتیویتی ایجاد کرد و به آن دستور داد بدون اینکه در فایل xml مربوطش کد یا دستوری رو وارد کرد ؟
پاسخها 3
Button btn = new Button(this);
btn.setText("MyButton");
LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout); LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); ll.addView(myButton, lp);
نظرات
البته کد واضحه ولی با اجازه behnam2000 من کد رو یه توضیح کوچیک میدم،
1- یه شی به نام btn از نوع Button تعریف شده
2- تکست داخل btn رو "Mybutton" قرار داده شده
3- Liniearlout ای که در activity وجود داره و به اون id> buttonlayout اختصاص داده شده رو با l1 مشخص کردیم ( یه شی ازش ساختیم به نام l1)
4- پارامتر های layout رو مقدار width رو MATCH_PARENT و مقدار height رو WRAP_CONTENT ، در lp ذخیره شده
5- به l1 ، دکمه myButton با پارامتر lp اضافه شده
در جواب اینکه پرسدیدن تمام مراحلی که در xml انجام میشه رو میشه در اکتیویتی بصورت programmatically انجام داد، باید بگم که بله، من تو پروژه ای که اخیراٌ نوشتم مجبور بودم که یه صفحه رو داینامیک به خواسته کاربر ایجاد کنم و از همین روش استفاده کردم.
با این روش یک Button به بخوبی اضاف میشه < اما واقعا در Main.xml اضاف نمیشه ! که برای همیشه باقی بمونه چطور همینچین چیزی ممکنه ؟ < واینکه بجای استفاده از Gone چطور میشه یک عنصر رو واقعا از Main.xml پاک کرد ؟
ممنون از توضیحی که دادی .
یه سوال ، تو خط آخر چطوری یک View به اسم myButton بسازیم ؟
چون اکلیپس نمیشناستش
اینجا چون button رو btn نامگذاری کردن پس باید بجای myButton نوشته میشد btn یعنی درستش اینه
l1.addView(btn,lp
با کد زیر هم میشه خیلی راحت یک دکمه در اکتیویتی به وجود آورد که در فایل xml نیاز نباشه کدی وارد کنی
فقط ادرس یک LinearLayout که در فایل xml ، دکمه ها میخان داخلش ساخته شن رو از ما میخاد
LinearLayout ll = (LinearLayout) findViewById(R.id.lin_button);//LinearLayout دادن آدرس
Button extra = new Button(this);// ساختن دکمه جدید
extra.setText("extra");// دادن اسم به دکمه جدید
ll.addView(extra);
// دادن دستور به دکمه ساخته شده که هنگام کلیک شدن چه کاری انجام بده
extra.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(SearchActivity.this, MainActivity.class);
startActivity(intent);
}
});
نظرات
حتی LinearLayout رو هم لازم نیست حتماٌ تو xml اضافه کنی، میتونی اون رو هم مثل button با جاوا به برنامه اضافه کنی، فقط بجای Button از LinearLaayout استفاده کن
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات