私はアクティビティで膨らんでいるすべてのビューウィジェットをインターセプトし、そのビューのsetText機能が存在する場合はそれをオーバーライドしようとしています。すべてのビュー要素が膨張しているのを傍受しますか?
XMLレイアウトでTextViewにandroid:text = "bla"がある場合、それを傍受してxmlから設定されているすべてのテキストの末尾に**を追加したいと考えています。
私が必要とするものに近いと思われる方法の1つは、カスタムレイアウトインフレータを使用することです。私InflatorOnSteriodsで
LayoutInflaterCompat.setFactory(layoutInflator, InflatorOnSteriods(this))
とonCreateView上書きした後、そこにすべてのビューを傍受...このアプローチはまったく機能していないようです。 onCreateViewは決して呼び出されません。
私はcloneInContext
LayoutInflaterCompat.setFactory(layoutInflater.cloneInContext(this), InflatorOnSteriods(this))
を使用することも試みたが、同様に運が、多分私のアプローチは、私はまた、私が提示されているすべてのビューを傍受することができますし、特定のセットであることを別の方法に開いています完全に間違っていませんそのビューの特定の属性私が最後にそのビューを変更し、システムが自分の変更を尊重し、後でそれらを変更しないようにすることは、本当に重要です。
更新:
私はその関連はないと思うが。私は最終的に私はインフレータ工場溶液で欲しかったものを達成するために管理私の解決策をトラブルシューティングするいくつかの時間後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'クラスのコードを追加することができますhere見つけることができますか? – petey
クラスは現在何もしていませんが、@peteyというコードを追加しました。だから私はその問題を考えません。そして私の質問は正しいアプローチであっても、そうではないかもしれません。 –
"TextViewにXMLレイアウトのandroid:text =" bla "がある場合、それを傍受してxmlから設定されているすべてのテキストの最後に**を追加したいと思っています。これはどこに起こっているのですか? (また、その偉大なあなたはkotlinを使用しています) – petey