Ширина DialogPreference - PullRequest
       2

Ширина DialogPreference

0 голосов
/ 05 марта 2012

У меня проблема с шириной DialogPreference в Android.В соответствии с шириной DialogPreference, я установил поле текстового поля так, чтобы его позиция была выровнена с позицией большого пальца на панели поиска.Это прекрасно работает при перетаскивании большого пальца.

Но когда я показываю DialogPreference, ширина еще не была установлена ​​и всегда равна 0. Поэтому начальная позиция моего TextView всегда равна 0, пока я не перетаскиваю панель поиска.в первый раз.

Я не могу найти подходящий обратный вызов в классе, который вызывается при установке ширины (что-то похожее на onSizeChanged () было бы здорово).

Есть ли обратный вызовили трюк, который я могу использовать?

1 Ответ

0 голосов
/ 16 марта 2012

Решение довольно сложное. Вы должны создать свой собственный виджет, полученный из стандартного виджета (виджет, который должен использоваться в макете вашего диалога). Этот виджет используется вместо стандартного виджета в макете, используемом в настройках диалогов.

Затем вы добавляете интерфейс обработчика обратного вызова и обработчик обратного вызова в этот новый виджет. После этого вы можете переопределить onDraw () и вызвать ваш обработчик обратного вызова перед вызовом super.onDraw ().

Теперь, когда вы реализуете прослушиватель обратного вызова в своем классе предпочтений диалога и назначаете его этому виджету, вы получаете обратный вызов onDraw (). Когда вызывается этот обратный вызов, все значения ширины и высоты были установлены, и вы можете работать с ними.

Я знаю, что это грязный хак, но я не нашел ничего лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...