【问题标题】:Android Relative Layout can't make image on centerAndroid相对布局无法在中心制作图像
【发布时间】:2012-04-09 15:23:44
【问题描述】:

您好,我设法使图标中心与线性视图中的文本在同一行,但我想在右侧添加一个箭头图像,所以我必须切换到相对视图。如图所示,我无法将相对视图左图标设置为线性视图。

编辑
我想让箭头图标停留在右边。


左图是线性的,右图是相对的。

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layercontainer"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<ImageView android:id="@+id/categoryIcon"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:gravity="center_vertical"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentBottom="true"
    android:layout_marginRight="15dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp" />
<TextView android:id="@+id/categoryTitle"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:gravity="center_vertical"
    android:layout_alignParentTop="true"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@id/categoryIcon"
    android:textStyle="bold"
    android:textSize="22dp"
    android:textColor="#000000"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp" />
<ImageView
        android:id="@+id/nextIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"/>
</RelativeLayout>

【问题讨论】:

  • 很抱歉我没有做出明确的解释。我希望箭头同时保持在右侧希望对齐在线性布局中看起来仍然相同。

标签: android xml android-layout android-relativelayout


【解决方案1】:

我建议使用 TextView 属性 drawableLeft 和 drawableRight

android:drawableLeft="@drawable/whatever"
android:drawableRight="@drawable/arrow"
android:width="fill_parent"

这样,将 TextView 的重心设置为中心,一切都应该没问题

此外,使用单个 TextView 而不是 RelativeLayout + 3 个视图是对简单性的一大改进。无论如何,如果你坚持使用 3 个视图,使用 LinearLayout 而不是 RelativeLayout 是一个不错的建议。

【讨论】:

  • 尝试使TextView的witdh为“fill_parent”。然后您可能需要将重力设置为 left|center_vertical 以使文本保持在左侧。如果这不起作用,请不要发疯并坚持使用linearlayout + TextView(图标+文本)+ ImageView(箭头)。有一个属性drawablePadding,但它可能会让你有些头疼。
  • android:layout_width="fill_parent"android:drawableRight="@drawable/next" 有效。非常感谢 Maragues!
【解决方案2】:

为什么不能使用 LinearLayout?

好像这样可行:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layercontainer" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp"> 
    <ImageView android:id="@+id/categoryIcon" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center_vertical" 
        android:layout_marginRight="15dp" 
        android:layout_marginTop="5dp" 
        android:layout_marginBottom="5dp" /> 
    <TextView android:id="@+id/categoryTitle" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center_vertical" 
        android:textStyle="bold" 
        android:textSize="22dp" 
        android:textColor="#000000" 
        android:layout_marginTop="5dp" 
        android:layout_marginBottom="5dp" /> 
    <ImageView 
        android:id="@+id/nextIcon" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:gravity="center_vertical" 
        android:layout_marginTop="5dp" 
        android:layout_marginBottom="5dp"/> 
</LinearLayout> 

【讨论】:

  • 把最后一个imageview改成android:layout_width="0dp",然后加上android:layout_weight="1",让它占据前两个放置后的所有剩余空间,然后android:layout_gravity="right",这将使小部件与分配的视图空间的右侧。这应该会给你想要的外观。
【解决方案3】:

你应该使用 LinearLayout 来获得一个简单的 xml 结构

因为The LinearLayout is the most simple layout available in Android. A LinearLayout organizes layout components in a linear fashion horizontally or vertically

Creating Efficient Layouts 说一下RelativeLayout 和LinearLayout 的性能:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2018-07-31
    • 2016-11-25
    • 2015-01-14
    相关资源
    最近更新 更多