2013-02-11 115 views
0

想要为android的新版Google Maps v2 api设计自定义标记 - 气球。我已经覆盖了getInfoContents,但是我现在的布局占用了ym自定义设计的全屏宽度。我希望它以最大宽度环绕文本。我在网上阅读后发现我的问题,可能它在RelativeLayout中有循环依赖,这是不允许的。但是,如何将文本框“位置”移动到布局的右侧,与标题一致,但是在右侧?谢谢。RelativeLayout wrap_content宽度,循环依赖

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:paddingBottom="2sp" 
     android:paddingLeft="5sp" 
     android:paddingTop="1sp" 
     android:textColor="@color/list_item_title_color" 
     android:textSize="15sp" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"sa 
     android:layout_below="@id/title" 
     android:ellipsize="end" 
     android:maxLines="3" 
     android:paddingBottom="3sp" 
     android:paddingLeft="5sp" 
     android:paddingRight="5sp" 
     android:textColor="@color/list_item_text_color" 
     android:textSize="13sp" /> 

    <TextView 
     android:id="@+id/place" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:gravity="right" 
     android:paddingRight="5sp" 
     android:paddingTop="1sp" 
     android:textColor="@color/list_item_date_color" 
     android:textSize="13sp" /> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/icons" 
     android:layout_width="fill_parent" 
     android:layout_height="32dp" 
     android:layout_below="@id/place" 
     android:gravity="right" 
     android:orientation="vertical" 
     android:paddingBottom="2sp" 
     android:paddingLeft="5sp" 
     android:paddingRight="5sp" > 
    </LinearLayout> 

</RelativeLayout> 
+0

哪里是循环依赖? – Ryan 2013-02-11 19:42:30

+0

如果我理解正确,它在'android:layout_alignParentRight =“true”'。 – TutenStain 2013-02-11 20:18:24

+0

没有,不应该导致循环依赖,它不受其他任何东西的约束,因为你有它。看到这里的一些更多的信息:http://stackoverflow.com/questions/10916892/android-relative-layout-circular-dependencies-error – Ryan 2013-02-11 20:25:37

回答

0

你就不能添加:

android:layout_toRightOf="@id/title" 

你的地方TextView的?

编辑:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" > 

<RelativeLayout 
android:id="@+id/leftLayout" 
android:layout_alignParentLeft="true" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" > 

<TextView 
    android:id="@+id/title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ellipsize="end" 
    android:maxLines="1" 
    android:paddingBottom="2sp" 
    android:paddingLeft="5sp" 
    android:paddingTop="1sp" 
    android:textColor="@color/list_item_title_color" 
    android:textSize="15sp" 
    android:textStyle="bold" /> 

<TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"sa 
    android:layout_below="@id/title" 
    android:ellipsize="end" 
    android:maxLines="3" 
    android:paddingBottom="3sp" 
    android:paddingLeft="5sp" 
    android:paddingRight="5sp" 
    android:textColor="@color/list_item_text_color" 
    android:textSize="13sp" /> 

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/icons" 
    android:layout_width="fill_parent" 
    android:layout_height="32dp" 
    android:layout_below="@id/place" 
    android:gravity="right" 
    android:orientation="vertical" 
    android:paddingBottom="2sp" 
    android:paddingLeft="5sp" 
    android:paddingRight="5sp" > 
</LinearLayout> 

</RelativeLayout> 

    <TextView 
     android:id="@+id/place" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_toRightOf="@id/leftLayout" 
     android:gravity="right" 
     android:paddingRight="5sp" 
     android:paddingTop="1sp" 
     android:textColor="@color/list_item_date_color" 
     android:textSize="13sp" /> 
</RelativeLayout> 

这里,试试这个,但它不是测试。

+0

感谢您的答案,但只是把它放在标题的右侧,但我想它一路向右。 '| .................. | |标题地方| |文字图标| < - 图标位于linearLayout中。 | .................. |' – TutenStain 2013-02-11 19:42:54

+0

然后你可以用另一个RelativeLayout包装你的整个RelativeLayout,并把你的Textview放在这个外部布局中。然后设置为RightOf =“@ id/leftLayout”(leftLayout是您现有的RelativeLayout的ID)。 – 2013-02-11 19:46:20

+0

我尝试不同的设置,但'地点'和'标题'互相重叠。他们仍然在左侧。 – TutenStain 2013-02-11 20:06:56

0

除非我误解,你应该能够包住 “称号,地点和文本” 在linearlayout

<LinearLayout 
android:id="@+id/textLL 
android:orientation="horizontal" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
//textViews 
</LinearLayout> 

现在在你的 “图标” 布局中使用

android:layout_toRightOf="@+id/textLL" 

。或者这不是你想要的?

+0

差不多,但我想这样。感谢您的回复。 http://i559.photobucket.com/albums/ss36/TutenStain/Screenshot_2013-02-11-21-54-50_zps4c3ec2b6.png – TutenStain 2013-02-11 20:58:31

+0

如果“place”位于“title”旁边,那么将这两个放在'LinearLayout'中'orientation ='horizo​​ntal'',然后将“text”对齐到'LinearLayout'之下 – codeMagic 2013-02-11 21:05:02