Проблема возникает из-за того, что вы не придаете ей какого-либо стиля.
Use infoDialog.setView(view)
И при создании диалогового окна укажите стиль темы материала
val infoDialog = AlertDialog.Builder(ContextThemeWrapper(context,android.R.style.ThemeOverlay_Material_Dialog)).create()
и, в конце концов,
infoDialog.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
infoDialog.show()
Остальная часть вашего кода в порядке.
В winforms можно просто установить TreeView .Sorted
свойство к True
.
При Сортировке имеет значение true, объекты TreeNode отсортированы в алфавитном порядке их текстовыми значениями свойств. Необходимо всегда использовать BeginUpdate и EndUpdate для поддержания производительности при добавлении большого количества объектов к отсортированному TreeView. Когда текст существующего узла изменяется, необходимо назвать Вид для обращения объектов.
Касательно MSDN
Почему Вы не создаете новые классы, которым наследовался TreeView
и TreeNodeCollection
? Новое TreeView
будет использовать Ваше новое TreeNodeCollection
и можно переопределить Add()
метод TreeNodeCollection
сделать то, что Вы предлагаете.
Метод должен был бы: 1. был бы найти, что правильное положение вставило в и 2. был бы вставить новый узел.
Самая тривиальная реализация выполнила бы итерации через набор до thisNode.value<=newNode.value<nextNode.value
. Затем вставьте прежде nextNode.Index
. Вы видели, что производительность увеличилась, при использовании другого алгоритма поиска, в зависимости от размера набора. (Что-то как двоичный поиск приходит на ум.)
Примечание: Вы могли также просто создать дополнительный метод на a TreeNodeCollection
это делает то же самое. Однако переопределение Add()
метод гарантирует Ваш TreeView
всегда сортируется. Создание только дополнительного метода может привести к неопределенным результатам, если это уже не отсортировано перед Вашим AddIntoSorted()
звонить.