2017-09-03 10:36:27 +02:00
|
|
|
package fr.gouv.etalab.mastodon.helper;
|
|
|
|
|
|
|
|
import android.content.Context;
|
|
|
|
import android.util.AttributeSet;
|
|
|
|
import android.view.View;
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
import android.widget.ListView;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Created by Thomas on 03/09/2017.
|
|
|
|
* Expanded listview
|
|
|
|
*/
|
|
|
|
|
|
|
|
public class ExpandableHeightListView extends ListView
|
|
|
|
{
|
|
|
|
|
|
|
|
boolean expanded = false;
|
|
|
|
|
|
|
|
public ExpandableHeightListView(Context context)
|
|
|
|
{
|
|
|
|
super(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
public ExpandableHeightListView(Context context, AttributeSet attrs)
|
|
|
|
{
|
|
|
|
super(context, attrs);
|
|
|
|
}
|
|
|
|
|
|
|
|
public ExpandableHeightListView(Context context, AttributeSet attrs,int defStyle)
|
|
|
|
{
|
|
|
|
super(context, attrs, defStyle);
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isExpanded()
|
|
|
|
{
|
|
|
|
return expanded;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
|
|
|
|
{
|
|
|
|
// HACK! TAKE THAT ANDROID!
|
|
|
|
if (isExpanded())
|
|
|
|
{
|
|
|
|
// Calculate entire height by providing a very large height hint.
|
|
|
|
// But do not use the highest 2 bits of this integer; those are
|
|
|
|
// reserved for the MeasureSpec mode.
|
|
|
|
int expandSpec = View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, View.MeasureSpec.AT_MOST);
|
|
|
|
super.onMeasure(widthMeasureSpec, expandSpec);
|
|
|
|
|
|
|
|
ViewGroup.LayoutParams params = getLayoutParams();
|
|
|
|
params.height = getMeasuredHeight();
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-12-17 14:20:04 +01:00
|
|
|
public void setExpanded(@SuppressWarnings("SameParameterValue") boolean expanded)
|
2017-09-03 10:36:27 +02:00
|
|
|
{
|
|
|
|
this.expanded = expanded;
|
|
|
|
}
|
|
|
|
}
|