Проблема с шириной TextInput в мобильном приложении Flex

Я сделал простое мобильное приложение Flex для тестирования полей TextInput. Я определяю свой вид с шириной = высота = 100% и использую вертикальную компоновку. Внутри я просто помещаю статические компоненты TextInput шириной 100, 200, 300, 400 соответственно. Я также показываю ширину каждого TextInput в его текстовом свойстве, и он показывает значения, которые я определил. Меня беспокоит то, что фактическая ширина текстовых полей не соответствует свойствам эмулятора телефона, который я использую (Samsung Epic WxH = 480x775) или фактического устройства. Например, TextInput шириной 400 полностью выходит за левую и правую стороны устройства, при этом он должен содержаться внутри него: он имеет ширину 400 пикселей, а устройство имеет 480 доступных пикселей. То же самое и со всеми другими TextInputs. Они выглядят намного шире, чем должны быть. В чем здесь проблема? Я упустил что-то тривиальное? Спасибо.


person Dmitry Buzolin    schedule 19.01.2012    source источник
comment
Собираясь настроить мобильное приложение, я заметил возможность автоматического масштабирования для разных точек на дюйм, по умолчанию он не отмечен, но, возможно, это вызывает вашу проблему, в их ссылке «Узнать больше» вы попадете сюда: Я все равно попытаюсь воспроизвести то, что вы видите, из любопытства.   -  person shaunhusain    schedule 19.01.2012


Ответы (1)


Это действительно имело значение. Если при создании приложения вы установите флажок для автоматического масштабирования для других точек на дюйм, он устанавливает это свойство в ViewNavigatorApplication.

applicationDPI = "160"

Если я не устанавливаю флажок, что свойство не добавлено, и я получаю ожидаемое поведение, если это свойство включено, и / или я установил флажок, тогда он регулирует значения пикселей, предполагая, что я написал его для 160 Экран DPI, и теперь ему нужно масштабировать значение для экрана 320 DPI.

person shaunhusain    schedule 19.01.2012
comment
Я также запустил этого парня на своем телефоне, черт возьми, получил Galaxy Nexus, 500 - это примерно 3/4 экрана, на котором работает тот, где я не установил размер приложения 160 DPI, я вижу растяжение окна 500 за пределами ширины экрана (что не имело бы смысла, если бы не масштабирование до 1000 пикселей из-за разницы в плотности экрана). - person shaunhusain; 19.01.2012
comment
Удивительно, насколько легко создать простое мобильное приложение и протестировать его. Если бы я не был таким чертовски ленивым, когда дело доходило до моей собственной работы, я бы, наверное, уже создал что-то потрясающее ... возможно, лучшее приложение для переполнения стека :), хотя я не думаю, что вы можете создавать виджеты таким образом ... конечно, Джеймс Уорд покрыл это :) Джеймсвард. com / 2011/05/11 / exnding-air-for-android ‹- Всегда информативно / удивительно - person shaunhusain; 19.01.2012
comment
Привет, Шон, спасибо за быстрый ответ. Итак, в основном вы говорите вот что. если для applicationDPI установлено какое-то значение, например: 160. Flex будет масштабировать каждый компонент на основе его времени выполнения DPI с использованием соотношения runtimeDPI / applicationaitonDPI? Например, если я установлю applicationDPI = 160 и создаю элемент управления с шириной = 100. Во время выполнения на устройстве с разрешением 240 точек на дюйм flex будет масштабировать мою контрольную ширину до 100 * 240/160 = 150 пикселей устройства? Я предполагаю, что это имеет смысл, если мы хотим, чтобы элемент управления имел одинаковые физические размеры на разных точках управления устройством. - person Dmitry Buzolin; 20.01.2012
comment
Но тогда мы не должны больше полагаться на выражение таких свойств, как ширина / высота в пикселях при кодировании для мобильных устройств. Означает ли это, что мы должны избегать полностью пиксельных измерений при размещении элементов управления при использовании applicationDPI и использовать проценты и верх / низ / лево / правильные ограничения как единственные варианты? Извините, если мне это не было ясно из документации по гибкости. - person Dmitry Buzolin; 20.01.2012
comment
Это действительно зависит от приложения и макета. В некоторых случаях это автоматическое масштабирование может быть полезным, если оно вызывает у вас проблемы, вы можете просто не указывать DPI приложения, но тогда ничего с явно заданными размерами не изменится в зависимости от экрана. Поскольку существует большое разнообразие экранов, отображающих приложения Android, я бы подумал, что вы обычно хотите использовать ограничения, но на самом деле большое количество тестов - единственный реальный способ выяснить, какое лучшее решение для данной проблемы. Извините, я знаю, что это тоже непонятный ответ, но это зависит от обстоятельств. - person shaunhusain; 20.01.2012