2014-10-20 3 views
2

У меня возникла ситуация, когда я создал ListFragment, к которому я приложил HeaderView, содержащий длинный WebView среди других представлений. Я начал этот thread, где я подробно объяснил ситуацию, в которой всякий раз, когда пользователь пытался долгое нажатие на WebView, для того, чтобы: просто скажем, скопируйте фразу из нее и вставьте ее где-то еще, она автоматически прокручивается в нижней части заголовка.ListView с WebView as Header autoscrolling

Я создал простой пример (gist здесь), в котором я доказываю поведение, поэтому я могу легче понять. Макеты для него - просто простые макеты, ничего необычного. (a FrameLayout для Activity и a WebView для ListFragment headeView).

Как я уже упоминал в приведенном выше нить этот вопрос автопрокрутки может быть «исправлена» путем удаления линии

requestWindowFeature(Window.FEATURE_NO_TITLE); 

, и все работает нормально, но мне нужна активность, чтобы скрыть ActionBar/заголовок окна для он должен соответствовать дизайну. Я пробовал использовать ActionBarActivity с getSupportActionBar().hide(), но с тем же результатом проблемы автопрокрутки.

Что я могу сделать, чтобы манипулировать этим желаемым результатом?

LE: У меня есть ощущение, что каким-то образом я могу получить доступ к по умолчанию для onLongClick в WebView и после вызова этого метода по умолчанию я мог бы вернуть true, чтобы событие не было отправлено дальше (например, в ListView). Я искал везде, но я не могу найти этот кусок кода, чтобы запускать поведение по умолчанию (startActionMode с выбором и копированием/вставкой, которое я полагаю) на onLongClick.

LE2: макеты таковы: Макет MainActivity содержит FrameLayout с высотой/шириной match_parent. HeaderView - это макет, содержащий высоту и ширину match_parent WebView.

Это headerview расположения:

<?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/wv_test" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 
+0

Где ваш R.layout.act_main? Если вы хотите, чтобы кто-то помог вам. Вы должны предоставить всю информацию :) –

+0

Макет MainActivity имеет ширину/высоту match_parent FrameLayout. Нет ничего необычного. Я снова разместил сообщение с этой информацией. – DoruAdryan

+0

Я скопировал вставку, но они не были найдены «R.id.container_list» ((WebView) header.findViewById (R.id.wv_test)), R.layout.frag_header и другие так много –

ответ

1

Я думаю, что главная проблема заключается в том, что вы кладете прокручивать вид (WebView) как часть другой прокрутки зрения (список следует), вы должны попытаться создать пользовательский WebView и переопределение метод onTouchEvent таким образом:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    requestDisallowInterceptTouchEvent(true);  
    return super.onTouchEvent(event); 
} 

это следует отключить родительский WebView (список следует) перехватывать событие касания

+0

. Ваш ответ может быть на правильном пути, который я визуализировал, но ему нужно еще немного работать. Причина, по которой я говорю, заключается в том, что теперь список не будет прокручиваться вообще (проблема, потому что мой CustomWebView «крадет» это событие), поэтому мне нужно сделать этот запросDissallowInterceptTouchEvent, только когда я долгое время нахожусь в WebView , Не могли бы вы помочь мне в решении этого? – DoruAdryan

+0

Лучшее, что вы могли бы сделать, это установить requestDisallowInterceptTouchEvent (true); когда вы касаетесь webview и false, когда вы касаетесь списка, единственная проблема заключается в том, что вам нужно будет прикоснуться к экрану каждый раз, когда вы хотите изменить перехват. В противном случае, если вам не нужен заголовок для прокрутки списка, вы можете просто отделить их. – TheRedFox