1

У меня есть расширяемый список, внутри которого первый ребенок - Gridview. здесь у меня был вопрос об уменьшении высоты сетки. что я решил с помощью этого решения: Gridview height gets cut.Элемент GridView не прокручивается внутри Расширяемый список

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

Я могу сделать это с нормальным gridview, но показывая эту раздражающую проблему под расширяемым списком просмотров.

код:

<ExpandableListView 
      android:id="@+id/Explst" 
      android:layout_height="400dp" 
      android:transcriptMode="disabled" 
      android:layout_width="match_parent" 
      android:layout_marginTop="0.5dp" /> 

Gridview в расширяемой список заказного макета:

<mynamespace.ExpandableHeightGridView 
     android:id="@+id/gridview" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:columnWidth="90dp" 
     android:numColumns="auto_fit" 
     android:verticalSpacing="20dp" 
     android:horizontalSpacing="2dp" 
     android:stretchMode="columnWidth" 
     android:isScrollContainer="false" 
     android:gravity="center" /> 

пользовательских expandableheightgridview.cs

mynamespace 
{ 
     public class ExpandableHeightGridView :GridView 
    { 
     bool _isExpanded = false; 

     public ExpandableHeightGridView (Context context) : base (context) 
     {    
     } 

     public ExpandableHeightGridView (Context context, IAttributeSet attrs) : base (context, attrs) 
     {    
     } 

     public ExpandableHeightGridView (Context context, IAttributeSet attrs, int defStyle) : base (context, attrs, defStyle) 
     {    
     } 

     public bool IsExpanded { 
      get { return _isExpanded; } 

      set { _isExpanded = value; } 
     } 

     protected override void OnMeasure (int widthMeasureSpec, int heightMeasureSpec) 
     { 
      if (IsExpanded) { 
       int expandSpec = MeasureSpec.MakeMeasureSpec (View.MeasuredSizeMask, MeasureSpecMode.AtMost); 
       base.OnMeasure (widthMeasureSpec, expandSpec);     

       var layoutParameters = this.LayoutParameters; 
       layoutParameters.Height = this.MeasuredHeight; 
      } else { 
       base.OnMeasure (widthMeasureSpec, heightMeasureSpec);  
      } 
      base.OnMeasure(widthMeasureSpec, heightMeasureSpec); 

     } 
    } 

} 

Любые предложения/советы/ссылки заметны. Я пробовал это в xamarin.android C#, но даже любые решения для Java android также полезны.

Thanks

ответ

0

Необходимо установить expand = true;

mExpandGrid= (ExpandableHeightGridView) findViewById(R.id.mExpandGrid); 
mExpandGrid.setExpanded(true); 
+0

Да, я уже это сделал. Expand работает без каких-либо проблем. Но не удалось установить скроллер для этих элементов сетки, который является расширяемым дочерним элементом списка. – Suchith

Смежные вопросы