2015-05-21 2 views
1

Это может быть противоположным вопросом от Android GridView Items ResizingGridView элемент не расширяется, чтобы показать содержание

У меня есть GridView, который установлен для отображения пользовательского макета, сделанный из LinearLayout с фоном 9-патча и TextView. LinearLayout имеет набор дополнений 10dp, поэтому TextView остается в центральном патче.

Когда я тестировал данные для расширения TextView, LinearLayout также появляется для расширения (yay!), Но GridView отключает нижнюю часть. На изображении ниже вы можете видеть, что нижний правый элемент имеет нижнюю правую кривизну.

Screenshot of GridView

MyClasses.java:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my_classes); 
    notebookGrid = (GridView)findViewById(R.id.NotebookGrid); 

    ArrayList<String> class1 = new ArrayList<>(Arrays.asList("1", "Ms. Soldan's Class")); 
    ArrayList<String> class2 = new ArrayList<>(Arrays.asList("2", "Ms. Perry's Class")); 
    ArrayList<String> class3 = new ArrayList<>(Arrays.asList("3", "Ms. Panjwani's Class")); 
    ArrayList<String> class4 = new ArrayList<>(Arrays.asList("4", "Ms. Smith's Really Awesome Super Cool Class of Many Geniuses")); 

    ArrayList<ArrayList<String>> classArray = new ArrayList<>(); 
    classArray.add(class1); 
    classArray.add(class2); 
    classArray.add(class3); 
    classArray.add(class4); 
    notebookGrid.setAdapter(new MyClassesAdapter(this, classArray)); 
} 

MyClassesAdapter.java:

public View getView(int position, View convertView, ViewGroup parent) { 
    ArrayList<String> thisClass = getItem(position); 
    ViewHolder vh; 
    if (convertView == null) { 
     convertView = LayoutInflater.from(getContext()).inflate(R.layout.grid_class_notebook, parent,false); 
     vh = new ViewHolder(convertView,R.id.NotebookTitle); 
     convertView.setTag(vh); 
    } else { 
     vh = (ViewHolder)convertView.getTag(); 
    } 
     vh.TitleView.setText(thisClass.get(1)); 
    return convertView; 
} 

grid_class_notebook.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:background="@drawable/notebook"> 

    <Space 
     android:layout_width="wrap_content" 
     android:layout_height="10dp"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:gravity="center" 
     android:background="@color/White" 
     android:padding="10dp" 
     android:textStyle="bold" 
     android:textSize="12sp" 
     android:id="@+id/NotebookTitle" 
     /> 
</LinearLayout> 

activity_my_classes:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="10dp"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="22sp" 
     android:gravity="left" 
     android:padding="25dp" 
     android:text="@string/classes_title" 
     android:textStyle="bold"/> 

    <GridView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:numColumns="2" 
     android:padding="15dp" 
     android:id="@+id/NotebookGrid"/> 
</LinearLayout> 

Как получить элемент или строку для роста выше в ответ на более крупный ребенок TextView?

+0

добавить код для 'activity_my_classes.xml' – petey

+0

добавленного activity_my_classes – Scott

ответ

0

Так что мне потребовался месяц, чтобы ответить за себя. То, что происходило здесь, было то, что сам GridView был коротким, но сам элемент был действительно соответствующим. Мне никогда не приходило в голову прокручивать записные книжки, но я сделал это сегодня, и остальная часть изображения появилась.

В основном ошибка заключалась в том, что у GridView была высота «wrap_content». Я изменил его на высоту 0dp и добавил тэг weight = 1, так как в конце я добавлю некоторые другие элементы под GridView. Новый код XML для activity_my_classes:

<GridView 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:numColumns="2" 
    android:padding="15dp" 
    android:id="@+id/NotebookGrid"/>