如何在 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 中针对各种屏幕分辨率在固定位置显示控件?的主要内容,如果未能解决你的问题,请参考以下文章

1.3.2 适配不同的屏幕

在 Android 上针对不同的屏幕尺寸和密度重用可绘制图像

Android各种屏幕适配原理

Android 屏幕分辨率适配

Android 屏幕适配(修改系统字体大小显示大小修改分辨率相关适配)

Android 屏幕适配方案(转载)