RelativeLayout在设备和图形布局之间显示不同

时间:2013-08-26 22:47:44

标签: android android-layout relativelayout textview

我希望在文字左侧有一张图片。我希望图像和文本都位于屏幕的水平中心。所以我在下面创建了布局。但是,虽然在eclipse图形布局上看起来一切正确,但在真实设备上,图像仍然出现在图像的顶部,就像我使用了drawableTop一样。

<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> 

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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>

答案 2 :(得分: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>

或者不是在左边插入一个drawable,而是可以插入ImageView,右边对齐TextView的左边。