티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to prevent a scrollview from scrolling to a webview after data is loaded?
데이터가 로드된 후 ScrollView가 WebView로 스크롤되지 않도록 방지하는 방법
문제 내용
So I have a fascinating problem. Despite the fact that I'm not manually or programmatically scrolling my view, my WebView is being automatically scrolled to after the data inside it loads.
저는 흥미로운 문제를 가지고 있습니다. 뷰를 수동 또는 프로그래밍 방식으로 스크롤하지 않더라도, WebView가 로드된 후 자동으로 스크롤되고 있습니다.
I've got a fragment in a viewpager. When I first load the pager, it works as expected and everything is shown. But once I "flip the page" the data loads and the WebView pops up to the top of the page, hiding the views above it, which is undesirable.
저는 뷰페이저 안에 프래그먼트가 있는데요. 처음으로 뷰페이저를 로드하면, 모든 것이 예상대로 표시됩니다. 하지만 "페이지를 넘기면" 데이터가 로드되고 WebView가 페이지 상단으로 팝업되어 위의 뷰들을 가리는 문제가 발생합니다. 이는 바람직하지 않습니다.
Does anyone know how to prevent this from happening?
이것이 발생하지 않도록 방지하는 방법을 아시는 분 있나요?
My layout looks like such:
제 레이아웃은 다음과 같습니다:
<?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>
I'm also not giving focus to anything. By default, it seems to automatically scroll to the WebView after it has loaded. How do I prevent this?
저도 이 문제에 대한 자세한 정보가 없지만, WebView가 데이터를 로드 한 후 자동으로 스크롤링되는 것 같습니다. 어떻게 방지할 수 있을까요?
높은 점수를 받은 Solution
I had the same problem, after hours of trying several ideas, what finally worked for me was simply adding the descendantFocusability
attribute to the ScrollView's containing LinearLayout, with the value blocksDescendants
. In your case:
저도 비슷한 문제가 있었습니다. 몇 시간간 여러 가지 아이디어를 시도한 끝에, ScrollView를 포함하는 LinearLayout에 descendantFocusability 속성을 추가하고 값을 blocksDescendants로 설정하는 것이 제게는 잘 작동했습니다. 당신의 경우에는 다음과 같습니다:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:descendantFocusability="blocksDescendants" >
Haven't had the problem reoccur since.
이후로는 문제가 다시 발생하지 않았습니다.
가장 최근 달린 Solution
Probably there are people who have the same problem I was having, so I'll help out.
아마도 내가 겪은 문제와 같은 문제를 가진 사람들이 있을 것 같아서 도움을 주려고 합니다.
I was trying to put android:descendantFocusability="beforeDescendants" in my main ScrollView as following:
저는 다음과 같이 android:descendantFocusability="beforeDescendants"을 메인 ScrollView에 넣으려고 시도했습니다:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="beforeDescendants">
/*my linearlayout or whatever to hold the views */
and it wasn't working, so I had to make a RelativeLayout the parent of the ScrollView, and place the android:descendantFocusability="beforeDescendants" in the parent aswell.
So I solved it doing the following:
저는 android:descendantFocusability="beforeDescendants"를 메인 ScrollView에 적용하려고 했었는데, 작동하지 않았습니다. 그래서 ScrollView의 부모를 RelativeLayout으로 만들고, 부모에도 android:descendantFocusability="beforeDescendants"를 적용하니 해결되었습니다.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
/*my linearlayout or whatever to hold the views */
출처 : https://stackoverflow.com/questions/9842494/how-to-prevent-a-scrollview-from-scrolling-to-a-webview-after-data-is-loaded
'개발 > 안드로이드' 카테고리의 다른 글
Android WebView가 HTTPS URL을 로드 못하는 문제 수정하기 (0) | 2023.02.06 |
---|---|
startActivity() 동작 안할 때 확인해 볼 것들.. (0) | 2023.02.05 |
EditText를 둥근 모서리로 만들기 (0) | 2023.02.05 |
Glide를 사용하여 이미지를 비트맵으로 다운로드하기 (0) | 2023.02.05 |
세로 모드 강제 적용하기 (0) | 2023.02.04 |