LinearLayout - 垂直不对齐

发布于 2024-11-26 06:10:49 字数 2547 浏览 0 评论 0原文

我在 Android 上遇到了 LinearLayout 的问题。我有四个按钮。每个按钮都有固定的大小,但文本的长度可以不同。

我的问题是它们没有与每个的顶部对齐。它们与每个按钮内的文本顶部对齐,该文本的顶部根据按钮内的行数而变化(见图)。

另外,我想继续使用 LinearLayout,因为我最终将使用代码根据数据库中的数据添加按钮。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
       <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent">
           <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
       </LinearLayout>

</LinearLayout>

http://i.imgur.com/0Kj8h.png

编辑:答案(无法回答我自己的问题)问题):

好吧,我刚刚自己找到了答案。 您必须将 android:baselineAligned="false" 添加到 LinearLayout 或任何其他可以显示相同行为的类似控件。

您还可以使用名为“切换基线对齐”的按钮在 UI 设计器中修复此问题。

所以生成的代码是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
       <LinearLayout android:baselineAligned="false" android:layout_width="match_parent" android:layout_height="match_parent">
           <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
       </LinearLayout>

</LinearLayout>

I got a problem with LinearLayout on Android. I have four buttons. Each button has a fixed size, but the text can vary in length.

My problem is that they are not align with the top of each. They seen to be align with the top of the text inside of each botton which change depending on the number of line there is inside the button (See picture).

Also, I want to keep using LinearLayout as I will eventually use code will add buttons based on data from a database.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
       <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent">
           <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
       </LinearLayout>

</LinearLayout>

http://i.imgur.com/0Kj8h.png

EDIT: ANSWER (Can't answer my own question):

Ok, I just found the answer by myself.
You have to add android:baselineAligned="false" to LinearLayout or any other similar control that could show the same behavior.

You can also fix this in the UI designer using the button called "Toggle Baseline Alignment".

So the resulting code is:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
       <LinearLayout android:baselineAligned="false" android:layout_width="match_parent" android:layout_height="match_parent">
           <Button android:text="Line1 Line2" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1 Line2 Line3" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
           <Button android:text="Line1" android:textSize="30dp" android:layout_width="160dp" android:layout_height="120dp"></Button>
       </LinearLayout>

</LinearLayout>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

骄兵必败 2024-12-03 06:10:49

最好使用RelativeLayout进行这种类型的对齐,因为RelativeLayout的概念表明它“引用”控件

its better to use RelativeLayout for such type of alignment, as RelativeLayout's concept says that it "reference" of a control

巡山小妖精 2024-12-03 06:10:49

好吧,我猜你的第二个线性布局给你带来了麻烦,只需删除它

Well your second linear layout is whats creating the trouble I guess for u, just remove that

长途伴 2024-12-03 06:10:49

您可以使用 TableLayout 而不是您的第二个 LinearLayout。并在 TableLayout 内添加一个 TableRow 并在行中添加四个按钮

You can use TableLayout instead of Your Second LinearLayout.And add a TableRow inside the TableLayout and in the row add four buttons

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文