Pertanyaan fillviewport horizontalscrollview menonaktifkan bergulir?


Saya memiliki layout ini, dan itu scaled ganjil (mungkin karena tata letak bersarang inadviseable) jika saya tidak menggunakan fillviewport = true di HorizontalScrollView saya.

Semuanya bekerja peachy (kecuali untuk scaling aneh) ketika fillviewport = false, tetapi ketika fillviewport = true, scaling sempurna tetapi tidak ada scrolling terjadi.

Ini adalah tata letak (Catatan: Saya tahu Anda tidak seharusnya menempatkan tampilan web dalam tampilan gulir. Tetapi tampilan web tidak memiliki smoothscrollto atau mengekspos metode setcroller, jadi ... 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" biasanya tidak menonaktifkan scrolling dalam tampilan, bukan?

Hanya seharusnya memastikan bahwa scrollview mengisi viewport terlepas dari ukuran isinya, eh? Saya pikir viewport adalah area yang terlihat dari layar, dan pasti ada lebih banyak konten dari tepi area yang terlihat di tampilan web, saya tidak bisa menggulirnya lagi.

Saya dapat melihat dari logcat bahwa metode bergulir dipanggil, mereka tidak mengubah layar. (Kecuali saya mengatur fillviewport ke false.)


5
2018-03-15 03:55


asal


Jawaban:


Masalahnya adalah Anda menggunakan "fill_parent," yang berarti "sebesar orang tua saya." Gunakan wrap_content untuk lebarnya.


4
2018-03-15 05:32



Saya mengalami masalah serupa dengan ScrollView standar yang berisi WebView: pengguliran tidak berfungsi lagi. Mengubah fill_parent menjadi wrap_content tidak berhasil untuk saya.

Contoh Romain Guy berfungsi dengan baik ketika tampilan yang diperluas adalah TextView tetapi tidak ketika digantikan oleh WebView.

Apa yang tidak berfungsi:

<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>

Ketika saya menambahkan sejumlah kecil data dalam tampilan web, sepertinya tidak ada masalah:

small_data_not_ok1

Tetapi ketika saya mengisi WebView dengan banyak data, itu tidak bekerja seperti yang Anda lihat di bawah ini:

small_data_not_ok2

Tombol selalu ditampilkan dan gulungan tidak berfungsi lagi. Bahkan, scroll sentuh tidak berfungsi dan scroll DPAD bekerja ...

Saya tidak menemukan alasan untuk itu tetapi saya menemukan solusi: itu terdiri dalam menambahkan LinearLayout yang berisi 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>

Sekarang berfungsi dengan baik:

ok1 ok2


2
2018-06-28 14:51