Проблемы с GridView внутри ScrollView в android
Я пытаюсь положить GridView внутри ScrollView в android. Когда я помещаю GridView не работает.
Вот макет.
После многих поисков найден ответ, и он ниже
- Android: wrap_content не работает с ListView
- Камера: функция setDisplayOrientation не работает для Samsung Galaxy ACE с Android 2.3.6
- Как применить угловой радиус к LinearLayout
- Как перенести некоторые данные в другой fragment?
- Передача массива String между двумя classами в приложении android
- В чем разница между match_parent и fill_parent?
- Выполнение не выполнено для задачи ': app: compileDebugAidl': aidl отсутствует
- Чтение / запись файла .txt со специальными символами
- У Android Studio есть средство просмотра иерархии?
- «Произошла внутренняя ошибка» с интеграцией входа в Google Plus
- Android скрывает / скрывает значок приложения программно
- Сообщение для facebook wall from android fb sdk всегда ошибка
- Как использовать Android-камеру или Camera2 API для поддержки старых и новых версий API без заметок?
После поиска я нашел эту ссылку проекта: –
Класс ExpandableHeightGridView
package xx.xxx.xx.view; import android.content.Context; import android.util.AttributeSet; import android.view.ViewGroup; import android.widget.GridView; public class ExpandableHeightGridView extends GridView { boolean expanded = false; public ExpandableHeightGridView(Context context) { super(context); } public ExpandableHeightGridView(Context context, AttributeSet attrs) { super(context, attrs); } public ExpandableHeightGridView(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. // View.MEASURED_SIZE_MASK represents the largest height possible. int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); ViewGroup.LayoutParams params = getLayoutParams(); params.height = getMeasuredHeight(); } else { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } public void setExpanded(boolean expanded) { this.expanded = expanded; } }
Файл layout.xml
:
Использование classа GridView
mGridView = (ExpandableHeightGridView) getView().findViewById(R.id.spotsView); mGridView.setExpanded(true); SpotsAdapter adapter = new SpotsAdapter(getActivity(),R.layout.spot_item,params); mGridView.setAdapter(adapter); adapter.notifyDataSetChanged();
Это работает для меня
// Setting on Touch Listener for handling the touch inside ScrollView gridView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.getParent().requestDisallowInterceptTouchEvent(true); return false; } });