如何在 Android 中针对各种屏幕分辨率在固定位置显示控件?
Posted
技术标签:
【中文标题】如何在 Android 中针对各种屏幕分辨率在固定位置显示控件?【英文标题】:How do I show controls at a fixed position for various screen resolutions in Android? 【发布时间】:2010-12-29 02:57:36 【问题描述】:我有一个像下面这样的屏幕设计
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_horizontal"
android:layout_
android:layout_
android:orientation="vertical"
android:background="@drawable/img_background_loadbackground">
<TableRow>
<TextView
android:id="@+id/tv1"
android:layout_
android:layout_/>
</TableRow>
<TableRow>
</TableRow>
<ProgressBar
android:id="@+id/progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_
android:layout_ />
</TableLayout>
它在 HVGA(320x480) 分辨率下工作,进度条出现在屏幕底部,但如果我在其他分辨率 (WQVGA432 - 240x432) 下运行,进度条出现在屏幕中间。我无法在固定位置显示它。
我正在使用下面显示的清单文件,但没有输出
<supports-screens android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true" />
我没有解决方案,所以请给我一些解决问题的想法。
【问题讨论】:
【参考方案1】:如果您希望您的布局在不同分辨率的屏幕上工作,您应该使用dip
作为单位来调整它们的大小。例如:
android:layout_marginRight="10dip"
dip
代表 Device Independent Pixel,在您的布局中使用这些像素意味着 Android 将根据运行您的应用程序的设备自动缩放您的布局。
您可以在Supporting Multiple Screens page in the Android Developer Documentation 中了解这些内容。该文档还提供了一些其他选项来处理不同的显示,但我认为使用dip
可能是最简单的。
【讨论】:
【参考方案2】:这取决于您如何定义布局:在这里发布您的布局 XML 会有所帮助。
【讨论】:
【参考方案3】:我猜如果它在中间你有类似的东西:
android:layout_gravity="center"
但是,是的,发布您的 XML 会有点帮助!
【讨论】:
以上是关于如何在 Android 中针对各种屏幕分辨率在固定位置显示控件?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 上针对不同的屏幕尺寸和密度重用可绘制图像