Intereting Posts
В чем разница между SQLiteOpenHelper.close () и SQLiteDatabase.close ()? Макет создания объекта внутри метода AsyncTaskLoader не запускается Анализ данных JSON с использованием JSONReader или JSONObject / JSONArray Предложения по форме ввода данных в android Как град выбирает определенные URL-адреса для поиска репозитория? Как указать его в правильном направлении, чтобы я мог импортировать этот JAR? OnTouch в MapView запускается только в первый раз Почему SwitchPreference не отображает анимацию при переключении с включенного на off и наоборот? Adb – Как переустановить приложение, не сохраняя данные? Как рисовать много растровых изображений на экране в Android-игре без медленной работы Android-эмулятор отключается и невозможно выйти Google App Engine – конечные точки облаков – имя приложения не задано Android – ссылка на строковый массив с использованием другой строки с getIdentifier () и getStringArray Content: // sms / sent / not working Webviewglue nativedestroy view

Добавление Viewpager в качестве заголовка в listView

Я пытаюсь запрограммировать действие, которое показывает просмотрщик с некоторыми изображениями и списком ниже с некоторыми данными. Но моя проблема заключается в том, что я могу прокручивать только список на последней части экрана, я хотел бы сделать прокручиваемый просмотрщик с помощью Listview, поэтому я подумал о том, чтобы поместить его в заголовок. Вот мой XMl-файл

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <com.devsmart.android.ui.HorizontalListView android:id="@+id/sectionsList" android:layout_width="wrap_content" android:layout_height="25dp" android:background="@drawable/menu_bg" /> <include layout="@layout/main_screen_components" /> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> 

И я пишу это в своем классе

 @Override protected void onPostExecute(List<News> result) { Utils.pagerNews(result); Utils.listNews(result); ImagePagerAdapter pAdapter = new ImagePagerAdapter( appManager.getPagerNews()); pager.setAdapter(pAdapter); View headerView = getLayoutInflater().inflate(R.layout.main_screen_components , null , false); NewsListAdapter adapter = new NewsListAdapter(getBaseContext(), appManager.getListNews()); listView.addHeaderView(headerView); listView.setAdapter(adapter); progress.dismiss(); } 

Когда я запускаю этот код, он дает мне дублированный пейджер. Исправлено одно с данными, а пустое – как заголовок моего списка. Когда я удаляю, включая мой пейджер, он падает, когда я пытаюсь установить адаптер на пейджер. . Есть идеи ?

Solutions Collecting From Web of "Добавление Viewpager в качестве заголовка в listView"

Просто установите onPouchListener viewPager, как это:

 viewPager.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { PointF downP = new PointF(); PointF curP = new PointF(); int act = event.getAction(); if(act == MotionEvent.ACTION_DOWN || act == MotionEvent.ACTION_MOVE || act == MotionEvent.ACTION_UP){ ((ViewGroup) v).requestDisallowInterceptTouchEvent(true); if (downP.x == curP.x && downP.y == curP.y) { return false; } } return false; } 

Используйте следующий пользовательский класс viewpager:

 public class CustomViewPager extends ViewPager { boolean xScored = false, yScored = false; public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent ev) { mGestureDetector.onTouchEvent(ev); if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) { xScored = false; yScored = false; requestDisallowInterceptTouchEvent(false); } return super.onTouchEvent(ev); } GestureDetector.SimpleOnGestureListener mOnGestureListener = new GestureDetector.SimpleOnGestureListener() { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (!yScored && Math.abs(distanceX) > Math.abs(distanceY)) { xScored = true; yScored = false; } if (xScored) { requestDisallowInterceptTouchEvent(true); } else if (!xScored && Math.abs(distanceY) > Math.abs(distanceX)) { xScored = false; yScored = true; requestDisallowInterceptTouchEvent(false); } return true; } }; GestureDetector mGestureDetector = new GestureDetector(getContext(), mOnGestureListener); }