Я пытаюсь перехватить каждый виджет вида, который накачивается в моей активности и переопределяет функциональность setText этого представления, если он существует.Перехватить каждый элемент вида, накачанный?
Так что если TextView имеет андроид: text = "bla" в XML-макете, я хочу иметь возможность перехватить это и, возможно, добавить ** в конце всех текстов, заданных из xml.
Один из способов, который, кажется, близок к тому, что мне нужно, - использовать накладную упаковку Custom Layout.
LayoutInflaterCompat.setFactory(layoutInflator, InflatorOnSteriods(this))
и в моем InflatorOnSteriods переопределить onCreateView, а затем перехватывать все точки зрения там .. этот подход, кажется, не работает. onCreateView никогда не вызывается.
Я попробовал также использовать cloneInContext
LayoutInflaterCompat.setFactory(layoutInflater.cloneInContext(this), InflatorOnSteriods(this))
Но не повезло, а, может быть, мой подход не является совершенно неправильно я также открыт для другого пути, где я могу перехватывать все виды представляются и быть определенный набор определенный атрибут на этом представлении. Очень важно убедиться, что я буду последним, меняющим это представление, и убедитесь, что система уважает мои изменения и не изменяет их позже.
Update:
Хотя я не думаю, что его отношение; Код InflatorOnSteroids.kt
class InflatorOnSteriods(val appCompatActivity: AppCompatActivity) : LayoutInflaterFactory {
override fun onCreateView(parent: View, name: String, context: Context, attrs: AttributeSet): View {
var result: View
if (TextUtils.equals(name, "DebugDrawerLayout")) {
result = ImageView(context, attrs)
}
result = appCompatActivity.onCreateView(name, context, attrs)
if (result == null) {
// Get themed views from app compat
result = appCompatActivity.delegate.createView(parent, name, context, attrs)
}
return result
}
}
вы можете добавить 'код класса InflatorOnSteriods' на ваш вопрос? – petey
Я добавил код @petey, хотя класс сейчас ничего не делает ... поэтому я не думаю, что это проблема .. и мой вопрос в том, что даже правильный подход, потому что это может быть не так. –
«Итак, если TextView имеет андроид: text =« bla »в макете XML, я хочу, чтобы он мог перехватить это и, возможно, добавить ** в конце всех текстов, заданных из xml». где это происходит? (Кроме того, его замечательно, что вы используете kotlin) – petey