【问题标题】:Android RelativeLayout does layout_alignTop include padding / margin?Android RelativeLayout layout_alignTop 是否包含填充/边距?
【发布时间】:2017-07-07 13:54:22
【问题描述】:

我正在尝试使用RelativeLayout 设计一个键盘。 每次我尝试使用 layout_alignTop 或 bottom 或 Right ... 我看到块没有完全对齐,好像 android 会考虑对齐对象的填充或边距。 在这里,我的“Go”键跨越了两行,我无法很好地对齐。与我的顶部“X”键相同。

Go 键未对齐的键盘

这是我的布局:

 <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <TextView
            android:text="TextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/keybord_text_label"
            android:layout_alignRight="@+id/kb_b3"
            android:layout_alignLeft="@+id/kb_b1"
            />

        <TextView
            android:text="TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/keyboard_text_value"
            android:layout_below="@+id/keybord_text_label"
            android:layout_alignRight="@+id/kb_b3"
            android:layout_alignLeft="@+id/kb_b1"
       />

        <Button
            android:text="X"
            style="@style/keyboard_btn"
            android:id="@+id/kb_bdel"
            android:layout_toRightOf="@+id/keyboard_text_value"
            android:layout_alignBottom="@+id/keyboard_text_value"
            />


        <Button
            android:text="1"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b1"
            android:layout_below="@+id/keyboard_text_value"/>
        <Button
            android:text="2"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b2"
            android:layout_toRightOf="@+id/kb_b1"
            android:layout_below="@+id/keyboard_text_value"/>
        <Button
            android:text="3"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b3"
            android:layout_toRightOf="@+id/kb_b2"
            android:layout_below="@+id/keyboard_text_value"/>

        <Button
        android:text="4"
        style="@style/keyboard_btn"
        android:id="@+id/kb_b4"
            android:layout_below="@+id/kb_b1"/>
        <Button
            android:text="5"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b5"
            android:layout_toRightOf="@+id/kb_b4"
            android:layout_below="@+id/kb_b1"/>
        <Button
            android:text="6"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b6"
            android:layout_toRightOf="@+id/kb_b5"
            android:layout_below="@+id/kb_b1"/>


        <Button
                android:text="7"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b7"
                android:layout_below="@+id/kb_b4"/>
            <Button
                android:text="8"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b8"
                android:layout_toRightOf="@+id/kb_b7"
                android:layout_below="@+id/kb_b4"/>
            <Button
                android:text="9"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b9"
                android:layout_toRightOf="@+id/kb_b8"
                android:layout_below="@+id/kb_b4"/>

        <Button
                android:text="0"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b0"
                android:layout_below="@+id/kb_b7"
                />
            <Button
                android:text="+"
                style="@style/keyboard_btn"
                android:id="@+id/kb_bplus"
                android:layout_toRightOf="@+id/kb_b0"
                android:layout_below="@+id/kb_b7"
                />
            <Button
                android:text="-"
                style="@style/keyboard_btn"
                android:id="@+id/kb_bminus"
                android:layout_toRightOf="@+id/kb_bplus"
                android:layout_below="@+id/kb_b7"
                />

        <Button
            android:text="X"
            style="@style/keyboard_btn"
            android:id="@+id/kb_bback"

            android:layout_toRightOf="@+id/kb_b3"
            android:layout_below="@+id/kb_bdel" />

        <Button
            android:text="GO"
            style="@style/keyboard_btn"
            android:id="@+id/kb_bgo"
            android:layout_alignTop="@+id/kb_b6"
            android:layout_toRightOf="@+id/kb_b6"
            android:layout_alignBottom="@+id/kb_bminus" />





    <Button
        android:text=".00"
        style="@style/keyboard_btn"
        android:id="@+id/kb_b00"
        android:layout_below="@+id/kb_b0"
         />


    <Button
        android:text=".25"
        style="@style/keyboard_btn"
        android:id="@+id/kb_b25"
        android:layout_toRightOf="@+id/kb_b00"
        android:layout_below="@+id/kb_bplus"
        />
    <Button
        android:text=".50"
        style="@style/keyboard_btn"
        android:id="@+id/kb_b50"
        android:layout_toRightOf="@+id/kb_b25"
        android:layout_below="@+id/kb_bminus"
      />

    <Button
        android:text=".75"
        style="@style/keyboard_btn"
        android:id="@+id/kb_b75"
        android:layout_toRightOf="@+id/kb_b50"
        android:layout_below="@+id/kb_bgo"
        />
    </RelativeLayout>

这是我的风格

 <style name="keyboard_btn" parent="@android:style/Widget.Button">
    <item name="android:textSize">12sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:gravity">center</item>
    <item name="android:layout_margin">2dp</item>
    <item name="android:layout_height">40dp</item>
    <item name="android:layout_width">40dp</item>
    <item name="android:textColor">#FFFFFF</item>
    <item name="android:background">@drawable/keyboard_btn</item>
</style>

我也尝试过 TableLayout 和 GridLayout,但更糟糕。

欢迎提供帮助。

谢谢。

【问题讨论】:

  • 您是否尝试过GridLayout 并将开始按钮设置为跨多行?
  • 是的,我尝试过网格布局和表格布局(使用水平 Go 键),发现让任何东西看起来都更难。
  • 看起来它正在将边距与其他按钮的顶部对齐,您是否在 GO 按钮中尝试过 android:layout_below="@+id/kb_b1"

标签: android android-relativelayout


【解决方案1】:

我没有对此进行测试,但我相信使用 layout_belowlayout_above 可能会更好:

    <Button
        android:text="GO"
        style="@style/keyboard_btn"
        android:id="@+id/kb_bgo"
        android:layout_below="@+id/kb_b1"
        android:layout_toRightOf="@+id/kb_b6"
        android:layout_above="@+id/kb_b00" />

【讨论】:

  • 谢谢。效果更好。
  • 很高兴听到它,别忘了选择“为你工作”的答案
  • @Nathalie 这不是 Stackoverflow 的工作方式。如果此答案对您有帮助,请将其标记为已接受的答案,而不是创建您自己的答案并将其标记为已接受的答案
【解决方案2】:

非常感谢它解决了我的问题。

如果它可以帮助某人:

这是结果

Keyboard all well aligned

这里是代码

 <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >

        <!-- TEXTBOX -->
        <TextView
            android:text="TextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/keybord_text_label"
            android:layout_alignRight="@+id/kb_b3"
            android:layout_alignLeft="@+id/kb_b1"
            />

        <TextView
            android:text="TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/keyboard_text_value"
            android:layout_below="@+id/keybord_text_label"
            android:layout_alignRight="@+id/kb_b3"
            android:layout_alignLeft="@+id/kb_b1"
       />

        <Button
            android:text="X"
            style="@style/keyboard_btn"
            android:id="@+id/kb_bdel"
            android:layout_toRightOf="@+id/kb_b3"
            android:layout_above="@+id/kb_sep"
            />


        <!-- SEPARATOR -->
        <View
            android:id="@+id/kb_sep"
            android:layout_width="match_parent"
            android:layout_height="5dip"
            android:layout_below="@+id/keyboard_text_value"
            android:layout_alignEnd="@+id/kb_bdel"
            android:layout_alignRight="@+id/kb_bdel"
            android:layout_alignStart="@+id/kb_b1"
            android:layout_alignLeft="@+id/kb_b1"
            android:background="#ffffffff"/>


        <!-- LINE 1 -->
        <Button
            android:text="1"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b1"
            android:layout_below="@+id/kb_sep"/>
        <Button
            android:text="2"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b2"
            android:layout_toRightOf="@+id/kb_b1"
            android:layout_below="@+id/kb_sep"/>
        <Button
            android:text="3"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b3"
            android:layout_toRightOf="@+id/kb_b2"
            android:layout_below="@+id/kb_sep"/>

        <Button
            android:text="<"
            style="@style/keyboard_btn"
            android:id="@+id/kb_bback"
            android:layout_toRightOf="@+id/kb_b3"
            android:layout_below="@+id/kb_sep" />

        <!-- LINE 2 -->
        <Button
            android:text="4"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b4"
            android:layout_below="@+id/kb_b1"/>

        <Button
            android:text="5"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b5"
            android:layout_toRightOf="@+id/kb_b4"
            android:layout_below="@+id/kb_b1"/>

        <Button
            android:text="6"
            style="@style/keyboard_btn"
            android:id="@+id/kb_b6"
            android:layout_toRightOf="@+id/kb_b5"
            android:layout_below="@+id/kb_b1"/>

        <Button
            android:text="GO"
            style="@style/keyboard_btn"
            android:id="@+id/kb_bgo"
            android:layout_below="@+id/kb_bback"
            android:layout_above="@+id/kb_b75"
            android:layout_toRightOf="@+id/kb_b6"/>

        <!-- LINE 3 -->
        <Button
                android:text="7"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b7"
                android:layout_below="@+id/kb_b4"/>
            <Button
                android:text="8"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b8"
                android:layout_toRightOf="@+id/kb_b7"
                android:layout_below="@+id/kb_b4"/>
            <Button
                android:text="9"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b9"
                android:layout_toRightOf="@+id/kb_b8"
                android:layout_below="@+id/kb_b4"/>

        <!-- LINE 4 -->
        <Button
                android:text="0"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b0"
                android:layout_below="@+id/kb_b7"
                />
            <Button
                android:text="+"
                style="@style/keyboard_btn"
                android:id="@+id/kb_bplus"
                android:layout_toRightOf="@+id/kb_b0"
                android:layout_below="@+id/kb_b7"
                />
            <Button
                android:text="-"
                style="@style/keyboard_btn"
                android:id="@+id/kb_bminus"
                android:layout_toRightOf="@+id/kb_bplus"
                android:layout_below="@+id/kb_b7"
                />

        <!-- LINE 5 -->
            <Button
                android:text=".00"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b00"
                android:layout_below="@+id/kb_b0"
                 />


            <Button
                android:text=".25"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b25"
                android:layout_toRightOf="@+id/kb_b00"
                android:layout_below="@+id/kb_bplus"
                />
            <Button
                android:text=".50"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b50"
                android:layout_toRightOf="@+id/kb_b25"
                android:layout_below="@+id/kb_bminus"
              />

            <Button
                android:text=".75"
                style="@style/keyboard_btn"
                android:id="@+id/kb_b75"
                android:layout_toRightOf="@+id/kb_b50"
                android:layout_below="@+id/kb_bminus"
                />
    </RelativeLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2015-08-06
    • 2023-01-22
    相关资源
    最近更新 更多