在imageview android中间插入textview

时间:2013-02-02 20:19:35

标签: android layout textview imageview

我需要在imageview的中间放置一个文本视图,所以我有这个代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row_background"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

<TextView
    android:id="@+id/menu_label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:lines="1" />

<ImageView
    android:id="@+id/menu_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerInParent="true"
    android:layout_marginBottom="@dimen/menu_icon_margin_top_bottom"
    android:layout_marginRight="@dimen/menu_icon_margin_right"
    android:layout_marginTop="@dimen/menu_icon_margin_top_bottom" />

<TextView
    android:id="@+id/notif_number"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@id/menu_icon"
    android:layout_alignLeft="@id/menu_icon"
    android:layout_alignRight="@id/menu_icon"
    android:layout_alignTop="@id/menu_icon"
    android:lines="1"
    android:text="69"
    android:textColor="@android:color/white" />

我需要最后一个textview始终位于menu_icon ImageView的中心,但我的methdot不能正常工作,只需将它放在左上角。

3 个答案:

答案 0 :(得分:16)

由于你的ImageView没有填满所有RelativeLayout,你无法达到理想的效果。我建议你把ImageView和TextView放在FrameLayout中。

<FrameLayout
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerInParent="true">

 <TextView
    android:id="@+id/menu_label"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:lines="1" />

 <ImageView
    android:id="@+id/menu_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="@dimen/menu_icon_margin_top_bottom"
    android:layout_marginRight="@dimen/menu_icon_margin_right"
    android:layout_marginTop="@dimen/menu_icon_margin_top_bottom" />
</FrameLayout>

答案 1 :(得分:3)

你只需要添加:

android:layout_centerInParent="true"

到上一个TextView

答案 2 :(得分:1)

FrameLayout是最好的方式。您也可以使用RelativeLayout,顺便说一句。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="40dp"
    android:layout_height="40dp">

    <ImageView
        android:id="@+id/marker_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        tools:src="@drawable/ic_marker_selected" />

    <TextView
        android:id="@+id/marker_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:gravity="center"
        android:textColor="#fff"
        android:textSize="14sp"
        tools:text="A" />

</FrameLayout>