2

所以我想做一个简单的相对布局,其中包含3个带有TextViews,EditText和GridViews的线性布局,但最后一个TextView是重复的并且与之前的GridView重叠。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

UPDATE:解决
看来片段CreateView的方法被调用了两次。

回答

0

尝试layout_alignTop为TextView的:

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

我认为,这将有助于....