disabili fillviewport di horizontalscrollview scorrimento?
-
24-10-2019 - |
Domanda
Ho questo layout, ed è scalato stranamente (probabilmente a causa inadviseable nidificazione layout) se io non uso fillviewport = true nel mio HorizontalScrollView.
Tutto funziona Peachy (tranne che per la scala dispari) quando fillviewport = false, ma quando fillviewport = TRUE, la scala è perfetto, ma non lo scorrimento avviene.
Questo è il layout (Nota:.. So che non dovresti mettere un WebView in uno ScrollView Ma WebView non ha uno smoothscrollto né esporre un metodo setscroller, quindi ... bleh)
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webContainer"
android:layout_below="@+id/titlebar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webZ"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</HorizontalScrollView>
Setting Android:? FillViewport = "true" non lo scorrimento di solito non disabilitare in vista, lo fa
E 'solo supposto per essere sicuri che lo ScrollView riempie la finestra indipendentemente dalle dimensioni del suo contenuto, eh? Penso che la finestra è l'area visibile dello schermo, e c'è sicuramente più contenuti fuori dal bordo della zona visibile in WebView, non riesco proprio a scorrere ad esso più.
I può vedere dalle logcat che i tipi di scorrimento sono chiamati, solo che non cambiano lo schermo. (A meno che non ho impostato fillviewport su false.)
Soluzione
Il problema è che si utilizza "fill_parent," che significa "essere grande come la mia madre". Utilizzare wrap_content per la larghezza, invece.
Altri suggerimenti
ho incontrato un problema simile con uno ScrollView standard contenente una WebView: lo scorrimento non funzionava più. Cambio della fill_parent per wrap_content non ha funzionato per me.
L'esempio di Romain Guy sta funzionando benissimo quando la vista espansa è un TextView, ma non è quando è sostituito da WebView.
Quello che non funziona:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical">
<WebView android:id="@+id/webview"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1.0">
</WebView>
<Button
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="Click">
</Button>
</LinearLayout>
</ScrollView>
Quando si aggiunge una piccola quantità di dati in WebView sembra ok:
Ma quando riempio il WebView con un sacco di dati, esso non funziona come potete vedere qui sotto:
Il pulsante viene sempre visualizzato e il rotolo non funziona più. In realtà, il tocco di scorrimento non funziona e le opere DPAD scroll ...
Non ho trovato alcuna ragione per questo, ma ho trovato una soluzione: essa consiste nell'aggiunta di un LinearLayout contenente la WebView
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout android:id="@+id/linearlayout"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="1.0"
android:orientation="vertical">
<WebView android:id="@+id/webview"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</WebView>
</LinearLayout>
<Button
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="Click">
</Button>
</LinearLayout>
</ScrollView>
Ora funziona benissimo: