2014-08-29 119 views
0

我正在使用Google Maps API v2,并由于拥有自定义的InfoWindow而忽略了getInfoContents()InfoWindowAdapter。在getInfoContents()里面,我给一个xml充气,其中包含一个ImageView和三个TextViews防止出现在屏幕外的视图

当我在snippet中设置的文本大于视图时,我的问题就出现了,那么计数电视就被设置在视图之外。上面有一些截图。

enter image description hereenter image description here enter image description here

这里我的XML布局:

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

    <ImageView 
     android:id="@+id/categoryIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignBottom="@+id/count" 
     android:src="@drawable/ic_launcher"/> 

    <LinearLayout 
     android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_toRightOf="@+id/categoryIcon" 
     android:layout_centerVertical="true" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp"> 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Title" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/snippet" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Snippet" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/count" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#111177" 
     android:text="0" 
     android:textSize="20sp" 
     android:padding="10dp" 
     android:textColor="#FFF" 
     android:layout_toRightOf="@+id/text" 
     android:singleLine="true" /> 

</RelativeLayout> 

我怎样才能改变这种布局让屏幕里的计数TextView的,并在多片断?

我想始终显示计数TextView。

更新: 最后,与西蒙侯爵的答案我意识到一种方法来实现这一点。在这里,新的代码:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <ImageView 
     android:id="@+id/categoryIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignBottom="@+id/text" 
     android:src="@drawable/ic_launcher"/> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/text" 
     android:orientation="horizontal" 
     android:gravity="center_vertical" 
     android:layout_toRightOf="@+id/categoryIcon"> 

     <LinearLayout 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp"> 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Title" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/snippet" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Snippeta" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/count" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#111177" 
     android:text="0" 
     android:textSize="20sp" 
     android:padding="10dp" 
     android:textColor="#FFF" 
     android:singleLine="true" /> 

    </LinearLayout> 

</RelativeLayout> 

回答

2

您应该将其添加到的LinearLayout:

android:layout_width="0dp" 
android:layout_weight="1" 

新的布局文件:

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

    <ImageView 
     android:id="@+id/categoryIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignBottom="@+id/count" 
     android:src="@drawable/ic_launcher"/> 

    <LinearLayout 
     android:id="@+id/text" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_toRightOf="@+id/categoryIcon" 
     android:layout_centerVertical="true" 
     android:paddingLeft="10dp" 
     android:paddingRight="10dp"> 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Title" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/snippet" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Snippet" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/count" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="#111177" 
     android:text="0" 
     android:textSize="20sp" 
     android:padding="10dp" 
     android:textColor="#FFF" 
     android:layout_toRightOf="@+id/text" 
     android:singleLine="true" /> 

</RelativeLayout> 
+0

在RelativeLayout中使用weight并不影响视图,s o我所做的是创建另一个包含另一个Linear和count的LinearLayout。我用解决方案更新我的答案。 – 2014-08-29 17:01:29

+0

为我工作!谢谢。 @Simon拜托,你认为你可以帮我解决这个问题吗? http://stackoverflow.com/questions/25598696/recommended-way-order-to-read-data-from-a-webservice-parse-that-data-and-inse – Axel 2014-09-01 23:10:07

1

一个解决方案,伯爵的TextView总是出现,如果你想在右边是以下内容:

  • 把co在的LinearLayout前UNT文本视图,并添加 机器人:layout_alignParentRight = “真”
  • 并添加机器人:在线性布局

    <TextView 
        android:id="@+id/count" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentRight="true" 
        android:layout_alignParentTop="true" 
        android:background="#00F" 
        android:text="Large Text" 
        android:textAppearance="?android:attr/textAppearanceLarge" /> 
    
    <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentTop="true" 
        android:layout_toLeftOf="@id/count" 
        android:orientation="vertical" > 
    
        <TextView 
         android:id="@+id/title" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textAppearance="?android:attr/textAppearanceLarge" /> 
    
        <TextView 
         android:id="@+id/snippet" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textAppearance="?android:attr/textAppearanceLarge" /> 
    
    </LinearLayout> 
    
    layout_toLeftOf = “@ ID /计数”

+0

这将始终工作,文字大于视图,但是当视图更小时,视图将具有最大尺寸,因为视图是alignedParentRight,android使用左上角来设置视图的边界。所以它会有宽度= MATCH_PARENT的外观 – 2014-08-29 16:53:28