【问题标题】:Why are my "centered" objects slightly off-center in my RelativeLayout?为什么我的“居中”对象在我的 RelativeLayout 中略微偏离中心?
【发布时间】:2012-08-30 19:29:56
【问题描述】:

我想制作两个大小相同的单选按钮,它们具有自定义背景、文本和文本右侧的图像。由于它们与标准“按钮”有多么不同,我使用可点击的“RelativeLayout”制作它们。

文本和图像的高度不同,但我希望每个都在按钮中垂直居中。我还希望文本+图像的组合在按钮中水平居中。第二部分是我遇到的麻烦;它偏离中心,靠近左侧。在下图中,左侧是我想要的,而右侧是正在发生的事情。其中一个按钮(文本较长的那个)上的图像也被调整为更小...尽管按钮右侧仍有足够的空间。

这是我的代码:

<LinearLayout
    android:baselineAligned="false"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <RelativeLayout
        android:id="@+id/my_button"
        android:background="@drawable/radio_button"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal">
        <TextView
            android:id="@+id/button_textview"
            android:text="@string/button_label"
            android:textAppearance="?android:attr/textAppearanceButton"
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"></TextView>
        <ImageView
            android:contentDescription="@string/image_description"
            android:id="@+id/button_imageview"
            android:layout_centerVertical="true"
            android:src="@drawable/my_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/button_textview">
        </ImageView>
    </RelativeLayout>

    <RelativeLayout
        ... same thing for the second button ...
    </RelativeLayout>

</LinearLayout>

我做错了什么?

【问题讨论】:

    标签: android android-layout android-relativelayout gravity


    【解决方案1】:

    将此用作您的按钮:

    <LinearLayout
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="horizontal"
                  android:layout_gravity="center_horizontal"
                  >
        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center_vertical"
                  android:text="MyButton"/>
        <ImageView android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:layout_gravity="center_vertical"
                   android:src="@drawable/my_image"/>
    
    </LinearLayout>
    

    现在,您可以将其放置在其他父视图中。要将布局属性应用到上方按钮,请将这些属性放在上方按钮的外部 &lt;LinearLayout&gt; 标记中。

    替代方案:

    您可以使用以下属性将自定义图像设置为在 TextView 的侧面(左、右、上、下)上绘制: android:drawableLeft="@drawable/my_image"

    【讨论】:

    • 这并没有改变任何东西,但是谢谢。在那一刻,我充满希望。我不使用 drawableRight 的原因是它在按钮的右边缘绘制它,而不是在文本的右侧。
    • 您能否更新您现在在问题中使用的布局?
    【解决方案2】:

    原来解决方案是添加

    android:paddingRight="0dip"
    

    奇怪的是,尽管我一开始并没有放任何填充物。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 2015-08-10
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      相关资源
      最近更新 更多