লেআউট থেকে ভিউ যুক্ত করুন এবং মুছুন


94

আমি কীভাবে কোনও বিন্যাস থেকে একটি ভিউ যুক্ত এবং মুছতে পারি?


কি ধরণের লেআউট? আপনি যে কোডটিতে কাজ করছেন তার কিছু অংশ পেস্ট করতে পারেন?
ক্রিশ্চিয়ান

4
এটি কীভাবে প্রস্তুত?
কর্নেলিয়াস

উত্তর:


224

আমি এটি এর মতো করে দিয়েছি:

((ViewManager)entry.getParent()).removeView(entry);

46
আরও নতুন এসডিকে এর মধ্যে (ViewGroup):)
রন

@ শ্যুইজ কীভাবে আমরা এই ক্ষেত্রে ভিউ আইডিকে রিসেট করতে পারি M আমার সমস্যাটি যখনই আমার ক্রিয়াকলাপ শেষ হয়ে যায় তখনই যখনই পরবর্তী ভিউ যুক্ত হয় তখন ভিউ আইডি বৃদ্ধি পায় I ।
অ্যান্ড্রয়েড নিউবি

অনেক ধন্যবাদ এই উত্তর দেওয়ার জন্য
হেম

ভিউগ্রুপ সম্প্রসারিত হয় দেখুন প্রয়োগগুলি ভিউপ্যারেন্ট, ভিউ ম্যানেজার। এটিকে কল করার জন্য কল করুন (দেখুনগোষ্ঠী)
বুধবার

24

ভিউস্টাব ব্যবহার করুন এবং আপনি টগল করতে চান এমন বিন্যাসের বিন্যাস নির্দিষ্ট করুন। দৃষ্টিভঙ্গি:

mViewStub.setVisibility(View.VISIBLE) or mViewStub.inflate();

অদৃশ্য:

mViewStub.setVisibility(View.GONE);

41
আড়াল করা সরানোর মতো নয়।
ডার্কওয়াটার

আপনি যদি লুকিয়ে / আড়াল করতে চান তবে আপনি .setVisibility (View.INVISIBLE) এবং .setVisibility (View.VISIBLE) ব্যবহার করতে পারেন। যখন দৃশ্যটি অদৃশ্য হয় তখন ব্যবহারকারী এটির সাথে ইন্টারঅ্যাক্ট করতে পারে না।
dennisschagt

আসুন ধরা যাক আমার সাথে একটি অনিক্লিকলিস্টনার সংযুক্ত একটি টেক্সটভিউ রয়েছে। যদি আমি এটি অদৃশ্য হয়ে যায় এবং তারপরে আমি এটিতে ট্যাপ করি, তাহলে কি ইভেন্টটি এখনও চালিত হবে?
ahitt6345

22

এই হল সর্বোত্তম উপায়

LinearLayout lp = new LinearLayout(this);
lp.addView(new Button(this));
lp.addView(new ImageButton(this));
// Now remove them 
lp.removeViewAt(0); // and so on

আপনার যদি এক্সএমএল লেআউট থাকে তবে ডায়নামিক্যালি কল যুক্ত করার দরকার নেই

lp.removeViewAt(0);

পারফরম্যান্সের ক্ষেত্রে কী আলাদা হবে? আমি বলতে চাই যে এগুলি গতিশীলভাবে যুক্ত করার বা এটিকে একটি স্ট্যাটিক এক্সএমএল লেআউট ফাইলে রাখার চেয়ে পারফরম্যান্সের পার্থক্য রয়েছে এবং এটি ফুলে উঠতে দেয়?
stdout

19

কোনও বিন্যাসে ভিউ যুক্ত করতে, আপনি ক্লাসের addViewপদ্ধতিটি ব্যবহার করতে পারেন ViewGroup। উদাহরণ স্বরূপ,

TextView view = new TextView(getActivity());
view.setText("Hello World");

ViewGroup Layout = (LinearLayout) getActivity().findViewById(R.id.my_layout);
layout.addView(view); 

অপসারণের বিভিন্ন পদ্ধতি রয়েছে। ভিউগ্রুপের ডকুমেন্টেশন চেক করুন । বিন্যাস থেকে ভিউ অপসারণ করার একটি সহজ উপায় হতে পারে,

layout.removeAllViews(); // then you will end up having a clean fresh layout

4
সরানোআলভিউস () আমি যা খুঁজছিলাম!
অ্যালান

6

দৃশ্যমানতা পরিবর্তনের জন্য:

predictbtn.setVisibility(View.INVISIBLE);

অপসারণের জন্য:

predictbtn.setVisibility(View.GONE);

এটি আমার সমস্যার সমাধান করেছে, প্রতিটি উত্তরের চেয়ে বেশি than আমার মত কার্যকর, আপনার পটভূমি বা কিছু প্যারাম দৃশ্য সম্পূর্ণরূপে অদৃশ্য হতে বাধা দেয়।
ভেরথুস

4
এটি কারণ ভিউ.গন বিন্যাসের জন্য দর্শনটি সরিয়ে না, কেবল এটিকে অদৃশ্য করে তোলে এবং বিন্যাসের উদ্দেশ্যে এটি কোনও স্থান নেয় না।
ভিক্টর

6

সমীর ও আবেল তেরেফের দুর্দান্ত আনসার। তবে, আপনি যখন আমার ভিউটিতে কোনও ভিউ মুছে ফেলেন, আপনি নির্দিষ্ট আইডি দিয়ে কোনও ভিউ অপসারণ করতে চান। আপনি এটি কিভাবে করবেন তা এখানে।

1, আপনি যখন তৈরি করবেন তখন ভিউটিকে একটি আইডি দিন:

_textView.setId(index);

2, আইডি সহ দর্শনটি সরিয়ে দিন:

removeView(findViewById(index));

1

আপনি অ্যাডভিউ বা রিমুভ ভিউ ব্যবহার করতে পারেন

জাভা:

// Root Layout
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setGravity(Gravity.CENTER);
linearLayout.setOrientation(LinearLayout.VERTICAL);

// TextView
TextView textView = new TextView(context);
textView.setText("Sample");

// Add TextView in LinearLayout
linearLayout.addView(textView);

// Remove TextView from LinearLayout
linearLayout.removeView(textView);

কোটলিন:

// Root Layout
val linearLayout = LinearLayout(context)
linearLayout.gravity = Gravity.CENTER
linearLayout.orientation = LinearLayout.VERTICAL

// TextView
val textView = TextView(context)
textView.text = "Sample"

// Add TextView in LinearLayout
linearLayout.addView(textView)

// Remove TextView from LinearLayout
linearLayout.removeView(textView)

0

হাই, যদি আপনি অ্যান্ড্রয়েডে নতুন হন তবে নিজের দৃষ্টিভঙ্গিটি এটিকে ব্যবহারের জন্য প্রয়োগ করুন একদিকে যেতে যান, অন্যথায়, পিতামাতার দৃষ্টিভঙ্গিটি ধরে রাখুন এবং সেখান থেকে শিশুটিকে সরিয়ে দিন ..... অন্যথায় পিতামাতার বিন্যাসটি পান এবং এটি ব্যবহার করুন পদ্ধতিটি সমস্ত সন্তানের পিতামাতাভিউ.মরিভ (শিশু) সরান

আমি GONE পদ্ধতির ব্যবহারের পরামর্শ দেব ...


4
GONE কার্যকরভাবে দর্শনটি আড়াল করবে তবে এটি লেআউট থেকে সরাবে না
সাবাবাদো

4
প্যারেন্টভিউ.ম্রেভ (সরান ভিউনাম) সরল ব্যবহার করুন;
জালা জনসিংহ

আপনি এটি সম্পর্কে ঠিক বলেছেন, কিন্তু আমি ইঙ্গিত দেওয়ার চেষ্টা করছিলাম যে আপনি "GONE" সমাধান সরবরাহ করে প্রশ্নের উত্তর দিচ্ছেন না।
সাবাবাদো

0

আমি স্টার্ট এবং কাউন্ট পদ্ধতি ব্যবহার করে ভিউ সরিয়ে দিচ্ছি, আমি লিনিয়ার লেআউটে 3 ভিউ যুক্ত করেছি।

ভিউ.রেমভিউ (0, 3);


0

কোটলিন পুনরায় ব্যবহারযোগ্য এক্সটেনশন সমাধান

সরানো সরান

এই এক্সটেনশনটি যুক্ত করুন:

myView.removeSelf()

fun View?.removeSelf() {
    this ?: return
    val parent = parent as? ViewGroup ?: return
    parent.removeView(this)
}

সংযোজন সহজ করুন

এখানে কয়েকটি বিকল্প রয়েছে:

// Built-in
myViewGroup.addView(myView)

// Null-safe extension
fun ViewGroup?.addView(view: View?) {
    this ?: return
    view ?: return
    addView(view)
}

// Reverse addition
myView.addTo(myViewGroup)

fun View?.addTo(parent: ViewGroup?) {
    this ?: return
    parent ?: return
    parent.addView(this)
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.