Следуйте коду:
FindViewById<Button>(Resource.Id.Button_1).Visibility = ViewStates.Gone;
FindViewById<Button>(Resource.Id.Button_2).Visibility = ViewStates.Gone;
FindViewById<Button>(Resource.Id.Button_3).Visibility = ViewStates.Gone;
...
Следуйте картинке:
В первой строке нужно скрыть «кнопку 1», а у меня более 50 кнопок. Не хочу копировать всю эту строчку и делать до 50 раз, это очень утомительно. Есть ли способ сделать цикл с помощью foreach или скрыть все эти кнопки?
Можно ли скрыть кнопки с 1 по 50 с помощью foreach?
@ADM Во-первых, почему у вас 50 кнопок отдельно? Это просто тест.
ну тогда протестируйте с правильным подходом. Даже в обычном калькуляторе 50 кнопок не разбросаны.
@ADM, пожалуйста, посмотрите фото как я. abhiandroid-8fb4.kxcdn.com/ui/wp-content/uploads/2016/01/…
@ADM У меня несколько кнопок с scrollview
Это должен быть ListView. Помимо этого, я изложил решение выше. Вам нужно перебрать ребенка, посмотрите форумы.xamarin.com/discussion/18777/get-all-child-views-of-r oot.
@ADM, Спасибо за ссылку, посмотрю.
если у вас есть вся эта кнопка в родительском представлении, вы можете использовать метод группы представлений для его родительского элемента, чтобы скрыть все кнопки, используя foreach для всех кнопок, группа представлений которых оказывается кнопками
Вы решили проблему? Если нет, у меня есть решение для вас!





Вместо того, чтобы иметь 50 кнопок внутри прокрутки, используйте Listview и поместите кнопки в свой список. (См. Конец ответа для решения с помощью scrollview и кнопок)
Создайте класс модели Button:
public class Button{
public bool isVisible;
}
В своей деятельности создайте Список этого класса. Список buttonList = новый список ();
Затем создайте настраиваемый адаптер для списка и установите этот список в качестве источника для ListView.
После этого просто обновите объекты в списке. В адаптере на основе значения логического просто показать / скрыть кнопки
Таким образом будет легко включать или отключать кнопки в любой комбинации. В противном случае ваш код будет испорчен.
Однако, если вы все еще хотите использовать кнопки Scrollview и пятидесяти, Затем в действии перебирайте прокрутку следующим образом.
Я предполагаю, что у вас есть scrollview внутри LinearLayout, я передаю LinearLayout как параметр метода, внутри которого находится ваш scrollview:
public void updateButtonVisibility(LinearLayout layout) {
for (int i = 0; i < layout.getChildCount(); i++) {
View v = layout.getChildAt(i);
if (view instanceof Button) {
//Hide Button
view.Visibility = View.Gone;
}
}
}
Во-первых, почему у вас 50 кнопок отдельно. Если возможно, используйте список контейнеров. Если вы не можете использовать
List, просто запустите цикл for для дочерних элементов родительского макета и скройте все.