Как я могу добавить и удалить представление из макета?
Ответы:
Я сделал это так:
((ViewManager)entry.getParent()).removeView(entry);
(ViewGroup):)
Используйте ViewStub и укажите макет представления, которое вы хотите переключить. Смотреть:
mViewStub.setVisibility(View.VISIBLE) or mViewStub.inflate();
Чтобы исчезнуть:
mViewStub.setVisibility(View.GONE);
Это лучший способ
LinearLayout lp = new LinearLayout(this);
lp.addView(new Button(this));
lp.addView(new ImageButton(this));
// Now remove them
lp.removeViewAt(0); // and so on
Если у вас есть макет xml, не нужно добавлять динамически. Просто вызов
lp.removeViewAt(0);
Чтобы добавить представление в макет, вы можете использовать addViewметод ViewGroupкласса. Например,
TextView view = new TextView(getActivity());
view.setText("Hello World");
ViewGroup Layout = (LinearLayout) getActivity().findViewById(R.id.my_layout);
layout.addView(view);
Также существует ряд методов удаления. Проверьте документацию ViewGroup . Один простой способ удалить представление из макета может выглядеть так:
layout.removeAllViews(); // then you will end up having a clean fresh layout
Для изменения видимости:
predictbtn.setVisibility(View.INVISIBLE);
Для удаления:
predictbtn.setVisibility(View.GONE);
Отличный ответ от Самира и Абеля Терефе. Однако, по моему мнению, когда вы удаляете представление, вы хотите удалить представление с определенным идентификатором. Вот как это сделать.
1, присвойте представлению идентификатор при его создании:
_textView.setId(index);
2, удалите представление с идентификатором:
removeView(findViewById(index));
вы можете использовать addView или removeView
Ява:
// 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)
привет, если вы новичок в Android, используйте этот способ. Примените свое представление, чтобы оно исчезло. GONE - это один способ, иначе получите родительский вид и удалите оттуда дочерний элемент ... иначе получите родительский макет и используйте его метод удалить все дочерние parentView.remove (child)
Я бы предложил использовать подход GONE ...
Я удаляю представление, используя метод start и count, я добавил 3 представления в линейном макете.
view.removeViews (0, 3);
Добавьте это расширение:
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)
}