2013-08-26 24 views
0

我想要在文本左侧显示图像。我希望图像和文本都在屏幕的水平中心。所以我创建了下面的布局。但是,尽管eclipse图形布局上的所有内容看起来都是正确的,但在真实设备上,图像始终显示在图像顶部,就好像我使用drawableTop一样。RelativeLayout在设备和图形布局之间以不同方式显示

<RelativeLayout 
    android:id="@+id/animal" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:layout_below="@id/the_bar" 
    android:layout_centerHorizontal="true" 
    android:background="#FFFFFF" 
    android:clickable="true" 
    android:onClick="onAnimalClicked" > 

    <TextView 
     android:id="@+id/animal_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="40dp" 
     android:layout_centerHorizontal="true" 
     android:drawableLeft="@drawable/animal_button" 
     android:drawablePadding="5dp" 
     android:gravity="center_vertical" 
     android:text="Add to Animals" 
     android:textColor="#258BE2" 
     android:textStyle="bold" /> 
</RelativeLayout> 
+0

请发布完整的布局文件。问题不在于您发布的代码中。如果文件太长而无法发布,请使用pastebin并在此处提供链接。 – Vikram

回答

1

试试这个:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 
    <RelativeLayout 
     android:id="@+id/animal" 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:layout_below="@id/the_bar" 
     android:layout_centerHorizontal="true" 
     android:background="#FFFFFF" 
     android:clickable="true" 
     android:onClick="onAnimalClicked" > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/imageView" 
      android:src="@drawable/_ic_launcher"/> 

     <TextView 
      android:id="@+id/textView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      android:layout_toRightOf="@+id/imageView" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="Large Text"/> 
    </RelativeLayout> 
</LinearLayout> 
+0

没有变化。这没有什么区别。 –

+0

这是你在做什么? –

1

如果你想在重叠的ImageView的文本/另一种观点认为,你不能使用RelativeLayout的。这是因为在布局的本质上,使观点排斥其他观点。如果一个视图位于另一个视图之上,它将自动被推到默认位置并忽略写入的属性。

因此,解决方案是使用的FrameLayout

    <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 

       <ImageView 
        android:id="@+id/iv" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_vertical|center_horizontal" 
        android:src="@drawable/bike" > 
       </ImageView> 


        <TextView 
         android:id="@+id/tv1" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_vertical|center_horizontal" 
         android:gravity="center" > 
        </TextView> 
       </FrameLayout> 
+0

'如果你想在一个imageview /另一个视图上叠加文本,你不能使用RelativeLayout。这是因为它是在布局的本质中使视图排斥其他视图。“请在此处阅读接受的答案:[Android中的重叠视图](http://stackoverflow.com/questions/961944/overlapping-views-in -Android)。 “RelativeLayout”的一个优点是它允许视图重叠。而'FrameLayout'也是。 – Vikram

0

试试这个:

<TextView 
     android:id="@+id/animal_textview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:drawableLeft="@drawable/animal_button" 
     android:drawablePadding="5dp" 
     android:gravity="center_vertical" 
     android:text="Add to Animals" 
     android:textColor="#258BE2" 
     android:textStyle="bold" /> 

</RelativeLayout> 

或代替插入绘制到左边你可以插入的ImageView与其靠右侧TextView的左边。

相关问题