Итак, у меня есть интересная проблема. Несмотря на то, что я не прокручиваю свое представление вручную или программно, мой WebView автоматически прокручивается после загрузки данных внутри него.
У меня есть фрагмент в окне просмотра. Когда я впервые загружаю пейджер, он работает, как ожидалось, и все отображается. Но как только я «переворачиваю страницу», данные загружаются, и WebView всплывает вверху страницы, скрывая представления над ним, что нежелательно.
Кто-нибудь знает, как этого не допустить?
Мой макет выглядит так:
<?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>
Я тоже ни на что не акцентирую внимание. По умолчанию он автоматически прокручивается до WebView после загрузки. Как мне предотвратить это?
Ответы:
Вы можете просто добавить это в свой LinearLayout: android: focusableInTouchMode = "true". Меня устраивает.
источник
У меня была та же проблема, после нескольких часов
descendantFocusability
пробования нескольких идей, что в итоге сработало для меня, это просто добавление атрибута в ScrollView, содержащего LinearLayout, со значениемblocksDescendants
. В твоем случае:С тех пор проблема больше не возникала.
источник
RecyclerView
. Ваше решение работает и в этом случае :)Вы должны создать новый класс, расширить ScrollView, а затем переопределить requestChildFocus:
Затем в вашем макете xml, используя:
Это подходит для меня. ScrollView больше не будет автоматически прокручиваться до WebView.
источник
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); }
Добавление этих строк в основной макет решает проблему.
источник
Как это:
источник
Наверное, есть люди, у которых такая же проблема, как и у меня, так что я помогу.
Я пытался поместить android: ПотомкуFocusability = "beforeDescendants" в свой основной ScrollView следующим образом:
и это не сработало, поэтому мне пришлось сделать RelativeLayout родительским элементом ScrollView, а также разместить в родительском элементе android: DecndantFocusability = "beforeDescendants" .
Я решил это сделать следующим образом:
источник
Мне пришлось использовать полностью определенное имя для MyScrollView, иначе я получил исключение inflate.
источник