【问题标题】:Flex mobile application TextInput width issueFlex 移动应用程序 TextInput 宽度问题
【发布时间】:2012-02-13 17:16:44
【问题描述】:

我制作了一个简单的 Flex 移动应用程序来测试 TextInput 字段。我用 width=height=100% 定义我的视图并使用垂直布局。在里面我只是简单地放置静态 TextInput 组件,宽度分别为 100、200、300、400。 我还在其文本属性中显示了每个 TextInput 的宽度,它显示了我定义的值。困扰我的是 TextFields 的实际宽度与我正在运行的手机模拟器(Samsung Epic WxH = 480x775)或实际设备的属性不匹配。例如,宽度为 400 的 TextInput 完全超出了设备的左右两侧,而它应该包含在其中:它是 400 像素宽,设备有 480 个可用像素可用。所有其他 TextInputs 也是如此。他们看起来更宽,他们应该是。这里有什么问题?我错过了一些微不足道的事情吗?谢谢。

【问题讨论】:

  • 在设置移动应用程序时,我注意到自动缩放以适应不同 DPI 的选项,默认情况下它似乎未选中,但也许这会导致您的问题,在他们的 Learn More 链接中它带来你到这里:help.adobe.com/en_US/flex/mobileapps/…我仍然会尝试复制你出于好奇而看到的内容

标签: apache-flex mobile width textinput


【解决方案1】:

这确实使一切变得不同。创建应用程序时,如果您选中该框以针对其他 DPI 自动缩放,它会在 ViewNavigatorApplication 上设置此属性

applicationDPI="160"

如果我没有选中该属性未添加的框,并且如果包含该属性并且/或者我确实选中了该框,那么它正在调整像素值,假设我编写了它对于 160 DPI 屏幕,现在需要缩放 320 DPI 屏幕的值。

【讨论】:

  • 我也在我的手机上运行了这个家伙,只是为了它,得到一个 Galaxy Nexus,500 大约是屏幕的 3/4,运行我没有设置 160 DPI 应用程序的那个大小,我看到 500 的框超出了屏幕宽度(这没有任何意义,除非由于屏幕密度的不同而将其缩放到 1000 像素)。
  • 创建一个简单的移动应用程序并对其进行测试是多么容易,这真是令人惊讶。如果我在自己的工作中不是那么懒惰,我现在可能已经构建了一些很棒的东西......也许是一个更好的堆栈溢出应用程序:),尽管我认为你不能以这种方式创建小部件...当然詹姆斯沃德涵盖了这一点:) jamesward.com/2011/05/11/extending-air-for-android
  • 嗨,肖恩,感谢您的快速回复。所以,基本上你说的就是这个。如果 applicationDPI 设置为某个值,例如:160。Flex 将使用比率 runtimeDPI/applicaitonDPI 根据其运行时 DPI 缩放每个组件?例如,如果我设置 applicationDPI=160 并创建一个 width=100 的控件。在运行时,在具有 240 DPI 的设备上,flex 会将我的控件宽度缩放为 100*240/160=150 设备像素?如果我们希望控件在各种设备 DPI 上具有相同的物理尺寸,我想这是有道理的。
  • 但是,在为移动设备编码时,我们不应再依赖于以像素表示宽度/高度等属性。这是否意味着,在使用 applicationDPI 并使用布局控件时,我们应该避免完全基于像素的测量百分比和上/下/左/右约束是唯一的选择吗?抱歉,如果我从 flex 文档中不清楚这一点。
  • 这真的取决于应用程序和布局。在某些情况下,它自动为您执行的缩放可能是有益的,如果它给您带来问题,您可以简单地不指定应用程序 DPI,但是设置显式大小的任何内容都不会根据屏幕而改变。由于显示 Android 应用程序的屏幕种类繁多,我认为您通常希望基于约束,但实际上大量测试是找出给定问题的最佳解决方案的唯一真正方法。抱歉,我知道这也不是一个明确的答案,但这取决于。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多