TextView复制并重叠GridView

时间:2013-12-23 12:31:42

标签: android android-layout android-fragments android-gridview

所以我试图制作一个简单的相对布局,其中包含3个线性布局,其中包含TextViews,EditText和GridViews,但最后一个TextView是重复的,并且与之前的GridView重叠。

布局用于添加到活动的片段中。 对于GridViews,我使用的是简单的适配器,它为每个项目返回一个ImageView。

额外的TextView出现在哪里?为什么重叠上一个GridView?

我已附上布局代码,适配器代码和屏幕截图,以便更好地理解。

布局代码:     

<LinearLayout
    android:id="@+id/categoryNameGroup"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginStart="20dp"
    android:layout_marginEnd="20dp">

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:id="@+id/categoryNameTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/name"/>

    <EditText
        android:id="@+id/categoryNameEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

<LinearLayout
    android:id="@+id/categoryIconGroup"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_below="@id/categoryNameGroup"
    android:layout_alignParentLeft="true"
    android:layout_marginStart="20dp"
    android:layout_marginEnd="20dp">

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:id="@+id/categoryIconTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/icon"/>

    <GridView
        android:id="@+id/iconGridView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"
        android:numColumns="4"/>
</LinearLayout>

<LinearLayout
    android:id="@+id/categoryColorGroup"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/categoryIconGroup"
    android:orientation="vertical"
    android:layout_alignParentLeft="true"
    android:layout_marginStart="20dp"
    android:layout_marginEnd="20dp">

    <TextView
        style="?android:attr/listSeparatorTextViewStyle"
        android:id="@+id/categoryColorTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/color"/>

    <GridView
        android:id="@+id/colorGridView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"
        android:numColumns="4"/>
</LinearLayout>

适配器代码

public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    if (convertView == null) {  // if it's not recycled, initialize some attributes
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(8, 8, 8, 8);
    } else {
        imageView = (ImageView) convertView;
    }

    imageView.setImageResource(mThumbIds[position].getCode());
    return imageView;
}

截图https://drive.google.com/file/d/0B0TJ-ZEESqK3ZHE3cjVTMk1zMnM/edit?usp=sharing

更新:解决了 似乎片段createView方法被调用了两次。

1 个答案:

答案 0 :(得分:0)

尝试使用TextView的layout_alignTop:

 <GridView
    android:id="@+id/grd_user"
.../>
     <TextView
                android:id="@+id/uname"
                android:layout_alignTop="@id/grd_user"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
        />

我认为这会有所帮助......