我有一个关于Android中DialogPreference宽度的问题。根据DialogPreference的宽度,我设置文本字段的边距,使其位置与搜索栏的拇指位置对齐。拖动拇指时效果很好。
但是当我显示DialogPreference时,宽度尚未设置且始终为0.因此,我的TextView的初始位置始终为0,直到我第一次拖动搜索栏。
我在设置宽度时调用的类中找不到合适的回调(类似于onSizeChanged()会很好)。
我可以使用回调或技巧吗?
答案 0 :(得分:0)
解决方案非常复杂。您必须创建从标准窗口小部件(必须在对话框布局中使用的窗口小部件)派生的自己的窗口小部件。您可以在对话框首选项使用的布局中使用此小部件而不是标准小部件。
然后,为这个新窗口小部件添加一个回调处理程序接口和一个回调处理程序。之后,您可以在调用super.onDraw()之前覆盖onDraw()并调用回调函数。
现在,当您在对话框首选项类中实现回调侦听器并将其分配给此窗口小部件时,您将获得onDraw()回调。调用此回调时,已设置所有宽度和高度值,您可以使用它们。
我知道这是一个肮脏的黑客,但我找不到更好的东西。