如何使屏幕上的按钮水平和垂直居中且等距?

2024-01-22

我已经绞尽脑汁(这里是android新手,所以不难做到)有一段时间试图找出如何实现这一点:

使用RelativeLayout或AbsoluteLayout以外的东西来创建它。我有 Windows 编程背景,其中设备会为您调整“绝对”定位,并且 GUI 布局不是问题。

第一个布局在模拟器中效果很好,但不适合我的 Nexus One 或任何其他与模拟器大小不同的屏幕。我预料到了这一点,因为它是绝对定位的,但还没有找到可以针对不同屏幕尺寸正确格式化的解决方案。我的目标是让布局适用于不同的屏幕尺寸和纵向/横向。

这是我当前使用的代码:[main.xml]

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
  <Button
    android:id="@+id/Button01"
    android:layout_width="188px"
    android:layout_height="100px"
    android:text="A"
    android:layout_y="50px" android:layout_x="65px" android:textSize="48sp"/>

<Button
    android:id="@+id/Button02"
    android:layout_width="188px"
    android:layout_height="100px"
    android:text="B"
    android:layout_y="175px" android:layout_x="65px" android:textSize="48sp"/>

<Button
    android:id="@+id/Button03"
    android:layout_width="188px"
    android:layout_height="100px"
    android:text="C"
    android:layout_y="300px" android:layout_x="65px" android:textSize="48sp"/>
</AbsoluteLayout>

使用这里其他问题的花絮,我想出了这个,它更接近,但还没有。

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:gravity="center"
android:id="@+id/widget49"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Button
    android:id="@+id/Button01"
    android:layout_width="0dip"
    android:layout_weight="1"
    android:text="A"
    android:textSize="48sp"/>

<Button
    android:id="@+id/Button02"
    android:layout_width="0dip"        
    android:layout_weight="1"
    android:text="B"
    android:textSize="48sp"/>

<Button
    android:id="@+id/Button03"
    android:layout_width="0dip"      
    android:layout_weight="1"
    android:text="C"
    android:textSize="48sp"/>
</TableLayout>

这是 TableLayout 的图片:

任何帮助/指导将不胜感激。


使用你们俩的建议效果非常好!

对于那些感兴趣的人,这里是相对布局格式的最终​​ main.xml 代码,它与我尝试使用 AbsoluteLayout 执行的操作相匹配。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>

  <Button
    android:id="@+id/Button02"
    android:layout_width="188dip"
    android:layout_height="100dip"
    android:text="B"
    android:layout_centerInParent="true"
    android:textSize="48sp" android:textStyle="bold" />

  <Button
    android:id="@+id/Button01"
    android:layout_width="188dip"
    android:layout_height="100dip"
    android:text="A"
    android:layout_centerHorizontal="true"
    android:layout_above="@id/Button02"
    android:layout_marginBottom="30dip"
    android:textSize="48sp" android:textStyle="bold" />

  <Button
    android:id="@+id/Button03"
    android:layout_width="188dip"
    android:layout_height="100dip"
    android:text="C"
    android:layout_centerHorizontal="true"
    android:layout_below="@id/Button02"
    android:layout_marginTop="30dip"
    android:textSize="48sp" android:textStyle="bold" />

</RelativeLayout>

另外,还有一个有趣的说明,可能会对将来的某人有所帮助。当我修改我发布的带有这些建议的第一个代码时,我在尝试编译时收到了此错误:“\res\layout\main.xml:9:错误:错误:找不到与给定名称匹配的资源(在“layout_above”处,值为“@id/Button02”)。

通过谷歌搜索可能的原因,我发现由于对 Button02 的引用(通过 Button01 代码)发生在 Button02 实际创建之前,因此生成了错误。所以请注意在最终代码中声明了 Button02FIRST.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使屏幕上的按钮水平和垂直居中且等距? 的相关文章

  • 检测正在插入的设备

    我希望能够检测设备是否已插入 我希望能够像查询连接状态一样进行查询 这可能吗 或者我是否需要创建一个监听电池事件的广播接收器 显然是ACTION BATTERY CHANGED http developer android com refe
  • Android-ListView-performItemClick

    当我尝试使用时遇到一些困难执行项目单击ListView 的功能 我想要做的就是以编程方式在列表的第一项中执行单击 我怎样才能做到这一点 我在文档中查找了该函数 但我并不真正理解它的参数 我尝试过类似的事情 myListView perfor
  • Android 测试 java.lang.NoClassDefFoundError 由于 Fest-Android 出现错误

    我目前正在我的项目中实现 Android 版 Fest 但我似乎遇到了依赖问题 如果我在不包含 Fest 库的情况下运行测试 测试将正常运行 一旦我添加了 Fest 库 测试就不再运行 相反 会抛出异常 我的项目使用以下依赖项 compil
  • android新手需要了解“?android:attr/actionBarSize”

    我正在经历拉尔斯 沃格尔的教程 http www vogella com articles AndroidFragments article html在使用 Fragments 时 我遇到了以下代码 android layout margi
  • 垂直翻转 Android Canvas

    有没有一种简单的方法可以在 Android 中翻转画布 我似乎找不到任何可以让我垂直翻转它的东西 这样 y 轴上的零就是手机屏幕的底部而不是顶部 如果解决方案不是特别快也没关系 因为我没有对画布进行任何计算密集的操作 提前致谢 Try ca
  • 意图过滤器到底是什么?

    我读过很多关于意图过滤器的文章 但我真的无法理解它们到底是做什么的 那么 如果有人可以用一个清晰 的例子向我解释意图过滤器的作用到底是什么 thanks 我认为这是有据可查的here http developer android com g
  • Android 和 iOS 中的应用程序文件大小差异

    通过使用两个应用程序分发服务 Android 市场和 Apple 应用程序商店 我发现了一个谜团 Apple 应用程序的文件大小通常大于 Android 应用程序 我似乎找不到任何对这些差异的解释 而且这似乎是一个未触及的主题 我尝试过分配
  • Firebase 云消息传递 - 如何验证令牌?

    我正在使用 Firebase Cloud Messaging FCM 并且每次在客户设备上生成新令牌时 都会根据下面的缩写代码 我将此新令牌发送到我的服务器数据库 云 并将其保存在其中 以便能够发送未来推送通知使用 CFM API 从服务器
  • 按钮上方带有文本的单选按钮

    我是 Android 新手 我需要在我的活动中添加单选按钮 但我需要将文本放在项目符号按钮的顶部 请提供任何帮助 我发现了以下内容 尽管我不明白 drawable in 选择器和 style Tab 样式是什么 顶部带有文本的单选按钮 ht
  • 不同风格的模块文件

    我正在尝试在同一个应用程序中实现播放服务和华为服务 但希望能够按风格配置使用哪一个 每种风格都使用自己的 applicationIdSuffix 因此 对于每种不同的风格 华为插件都会失败 我无法编译 我的应用程序模块包含agconnect
  • 如何编写 adb jdwp + adbforward 脚本?

    我正在尝试使用命令行和脚本工具调试 Android 应用程序 我已经受够了 Android Studio 占用我的 CPU 要连接到我的应用程序 我需要adb jdwp获取 pid 然后adb forward tcp 8700 jdwp
  • 拥有可重用对话框的最佳方法是什么?

    在 Android 中创建可重用对话框的最佳方法是什么 阅读通过对话框开发指南 http developer android com guide topics ui dialogs html 我知道我可以使用AlertDialog Buil
  • 可下载字体例外

    我决定使用可下载字体 https developer android com guide topics ui look and feel downloadable fonts html在我的项目中 IS 按照指南中的建议实施了所有内容 当我
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 测试应用内结算:“发布者无法购买此商品”

    我的应用程序似乎已准备好在我的设备上进行应用内购买程序的 现实生活 测试 但是 我在 Play 商店中收到 发布商无法购买此商品 的错误消息 现在 我应该如何测试这个 我不想通过仅用于测试的虚拟帐户重新安装手机来丢失手机的配置 在开发者控制
  • 使用磁场计算旋转矩阵

    在获取旋转矩阵值时它包含public static boolean getRotationMatrix float R float I float gravity float geomagnetic 这里我如何计算float gravity
  • 如何在没有 OpenCv Manager 的情况下运行 OpenCV 代码

    我正在使用 OpenCV4Android 版本 2 4 10 并在 Samsung Galayx GT I9300 上测试我的代码 我遇到的问题是 我必须从 Play 商店下载 Opencv Manager 以便我的 opencv 代码运行
  • Android 布局仅使一个视图将自己绘制为横向,但其他所有视图都使用纵向

    我的活动布局中的主要视图元素是 VideoView 我的视频被渲染为设备的横向分辨率 但视频中的所有内容都是横向的 因此仍然需要在设备处于纵向位置时观看 即使我必须将活动设置为android screenOrientation landsc
  • 活动构建变体没有测试工件

    我基于 调试 构建变体创建了一个名为 bitrise 的新构建类型 使用 debug 构建变体时 经过检测的 androidTests 构建并运行良好 但是当我切换到新的 bitrise 构建变体时 出现以下错误 Process finis
  • Android 中用于过渡的自定义动画对象?

    我想用一些更奇特的东西来覆盖 Android 中的默认活动转换 我想做的事情不能用通常使用的 XML 集来完成 所以我不能使用overridePendingTransition因为它只接受对基于 XML 的动画资源的整数引用 我想做的是创建

随机推荐

  • 将对象序列化为 XElement 并在内存中反序列化

    我想将对象序列化为 XML 但不想将其保存在磁盘上 我想将它保存在 XElement 变量中 用于与 LINQ 一起使用 然后反序列化回我的对象 我怎样才能做到这一点 您可以使用这两个扩展方法在 XElement 和对象之间进行序列化和反序
  • 如何检测与 puppeteer 一起使用的 chrome 版本?

    我读到 puppeteer 使用最新版本的 chrome 我在哪里可以找到它正在使用的版本 我不想访问窗口上的导航器对象来获取它 基本上没有什么运行时 只是想知道 puppeteer 作为一个包是否在某处列出了它的依赖项 基本上 我想从其他
  • 通过javascript动态添加css到页面

    我正在制作一个将添加到外部网站的小部件 并且我制作了一个页面 可以生成 css 供他们设置样式 文本颜色 背景颜色 字体大小等 我最终得到了一个充满 CSS 的文本区域 供他们复制 粘贴到他们的网站 有没有办法将此 css 添加到当前页面以
  • 一起使用 makeLenses、类约束和类型同义词

    我对 Haskell 很陌生并且想使用makeLenses from Control Lens类约束与类型同义词一起使我的函数类型更加紧凑 可读 我试图提出一个最小的虚拟示例来演示我想要实现的目标 并且该示例除此之外没有其他目的 如果您对上
  • Google 日历 (API) 问题

    我想用谷歌日历 http en wikipedia org wiki Google Calendar为了添加派对活动 所以我添加了一个新的日历 活动 有没有删除该日历中所有事件的功能 或者只能通过删除整个日历并重新创建它来实现 我有每天更新
  • 如何使用Weka预测结果

    我是 Weka 新手 对该工具感到困惑 我有一个关于水果价格和相关属性的数据集 我正在尝试使用数据集预测具体的水果价格 由于我是 Weka 新手 我不知道如何完成这项任务 请帮助我或指导我了解有关如何进行预测以及此任务的最佳方法或算法是什么
  • rCharts-如何向 NVD3 图表添加轴标签和标题

    我正在探索 reCharts 我在向 Y 轴和标题添加标签时陷入困境 我是 rCharts 新手 这是我的示例代码 require rCharts n2 lt nPlot Hours Month group Task data cars t
  • jquery 的 $.ajax 中从 url 参数中删除附加 url 的方法

    我正在使用 cakephp 并想使用jQuery ajax发布到我的服务器 问题是 jQuery 的 ajax附加协议和主机名 但还包括当前控制器 因此我无法更改我粘贴的控制器 有没有办法改变 url 参数 ajax 这是我的示例邮政编码
  • 这个程序如何运作?

    include
  • Silverlight 3 和 Silverlight 4 条件 xaml

    我现在正在开发一个必须分离项目文件的项目 一个符合 Silverlight 3 另一个符合 Silverlight 4 该项目创建了一个在其他几个项目中使用的用户控件 不幸的是 其中一个处于 SL3 状态 现在无法升级 这就是为什么需要 S
  • 将目录迁移到不同的 svn 存储库

    我在 svn 存储库中有代码 将其称为存储库 A 现在假设我需要将内容移动到存储库 B 但存储库 B 已经对其他项目处于活动状态一段时间了 是否可以将特定目录从存储库 A 移动到存储库 B 同时保留文件历史记录 通常 要将整个存储库迁移到新
  • MapView 显示在灰色瓷砖地图中未显示在 android google api 2.3.3 中

    您好 我正在开发一个地图视图 我尝试遵循以下方式 我通过单击按钮创建了一个 意图 添加权限和库 我创建了一个覆盖项目 我的模拟器的目标是GoogleApi 2 3 3 我的MapView密钥已获取并分配到mapview xml中 我看到底部
  • Eclipse:快速搜索文件名

    在 Eclipse 中工作时 我经常意识到我记得类名 但忘记了该类在哪个包中 使用搜索不是很方便 点击和按键次数过多 我想知道 有没有一个插件可以简化这个过程 例如 如果包资源管理器顶部有一个文本编辑框 可以根据输入的文本过滤显示包和 ja
  • 确定 1 到 0 转换之间的时间

    我的表格显示泵的开 关状态如下 Value timestamp 1 2013 09 01 00 05 41 987 0 2013 09 01 00 05 48 987 1 2013 09 01 00 05 59 987 0 2013 09
  • 使用reduce进行分组和求和

    我想返回一个按团队分组的数组 其中包含 gp 胜利 失败的总和 我试图通过减少来实现这一点 但是总数并没有相加 这是我的代码 const myArr team Red gp 3 win 2 loss 1 team Black gp 3 wi
  • Cordova/Phonegap 社交共享

    我正在寻找一种简单的解决方案 用于在 cordova phonegap 应用程序内部共享 我希望添加 Facebook Twitter 和电子邮件共享 就像这个应用程序一样 http itunes apple com us app mars
  • 在 Yii 中设置默认时区

    我正在使用以下时区配置配置文件 timeZone gt UTC 它工作正常 所有日期都根据以下内容存储在数据库中UTC 现在每个用户在他 她的个人资料中都有自己的时区 例如UTC 5 UTC 5 UTC 0 etc 现在我如何根据用户时区在
  • 我如何知道使用 Azure 存储的代码是否会受到 2015 年 12 月即将删除的 API 版本的影响? [复制]

    这个问题在这里已经有答案了 我有一个来自微软的电子邮件 http aka ms Qga48e据说较低版本的存储服务将于 2015 年 12 月被删除 我们的应用程序使用 Azure SDK 1 8 和 2 0 我们如何确定我们是否受到此更改
  • 如何创建一个android自动启动应用程序?

    如何创建一个安卓自动启动应用程序 我的应用程序显示特殊日期通知 并且它必须自动启动 tnx 您可以使用报警管理器 http developer android com reference android app AlarmManager h
  • 如何使屏幕上的按钮水平和垂直居中且等距?

    我已经绞尽脑汁 这里是android新手 所以不难做到 有一段时间试图找出如何实现这一点 使用RelativeLayout或AbsoluteLayout以外的东西来创建它 我有 Windows 编程背景 其中设备会为您调整 绝对 定位 并且