Jadi saya punya masalah yang menarik. Terlepas dari kenyataan bahwa saya tidak menggulir tampilan saya secara manual atau terprogram, Tampilan Web saya secara otomatis digulir ke setelah data di dalamnya dimuat.
Saya punya fragmen di viewpager. Ketika saya pertama kali memuat pager, itu berfungsi seperti yang diharapkan dan semuanya ditampilkan. Tapi begitu saya "membalik halaman", data akan dimuat dan WebView muncul di bagian atas halaman, menyembunyikan tampilan di atasnya, yang tidak diinginkan.
Adakah yang tahu bagaimana mencegah hal ini terjadi?
Tata letak saya terlihat seperti ini:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/article_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="2dp"
android:text="Some Title"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@color/article_title"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/LL_Seperator"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@color/text"
android:orientation="horizontal" >
</LinearLayout>
<WebView
android:id="@+id/article_content"
android:layout_width="match_parent"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/article_link"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:text="View Full Article"
android:textColor="@color/article_title"
android:textStyle="bold" />
</LinearLayout>
</ScrollView>
Saya juga tidak fokus pada apapun. Secara default, tampaknya secara otomatis menggulir ke WebView setelah dimuat. Bagaimana cara mencegahnya?
Jawaban:
Anda cukup menambahkan ini ke LinearLayout: android: focusableInTouchMode = "true". Ini bekerja untuk saya.
sumber
Saya memiliki masalah yang sama, setelah berjam-jam mencoba beberapa ide, yang akhirnya berhasil bagi saya hanyalah menambahkan
descendantFocusability
atribut ke ScrollView yang berisi LinearLayout, dengan nilainyablocksDescendants
. Dalam kasus Anda:Belum pernah masalah terulang kembali sejak saat itu.
sumber
RecyclerView
juga. Solusi Anda berfungsi dalam kasus itu juga :)Anda harus membuat kelas baru, memperpanjang ScrollView, lalu Ganti requestChildFocus:
Kemudian di tata letak xml Anda, menggunakan:
Itu berhasil untuk saya. ScrollView tidak akan menggulir otomatis ke WebView lagi.
sumber
public ExtendedScrollView(Context context) { super(context); } public ExtendedScrollView( Context context, AttributeSet attributeSet) { super(context, attributeSet); } public ExtendedScrollView( Context context, AttributeSet attributeSet, int defStyle) { super(context, attributeSet, defStyle); }
Menambahkan baris ini di tata letak utama memecahkan masalah
sumber
Seperti ini:
sumber
Mungkin ada orang yang memiliki masalah yang sama dengan saya, jadi saya akan membantu.
Saya mencoba untuk menempatkan android: descendantFocusability = "beforeDescendants" di ScrollView utama saya sebagai berikut:
dan itu tidak berfungsi, jadi saya harus menjadikan RelativeLayout sebagai induk ScrollView, dan menempatkan android: descendantFocusability = "beforeDescendants" di induk juga.
Jadi saya menyelesaikannya dengan melakukan hal berikut:
sumber
Saya harus menggunakan nama yang sepenuhnya memenuhi syarat untuk MyScrollView, jika tidak, saya mendapat pengecualian penggelembungan.
sumber