스크롤 뷰 내에서 선형 레이아웃이 확장되지 않음
나는 있습니다LinearLayout富士山의 ScrollView그것을 가지고 있는android:layout_height="fill_parent"하지만 그것은 전체 높이로 확장되지 않습니다.ScrollView은 다음과
level layout layout_width layout_height
1 LinearLayout fill_parent fill_parent
2 LinearLayout fill_parent wrap_content
3 (some irrelevant stuff)
2 ScrollView fill_parent fill_parent <-- this expands full height
3 LinearLayout fill_parent fill_parent <-- this does not (has orientation=vertical)
(following stuff probably are irrelevant, but just to be sure:)
4 TextView fill_parent fill_parent
4 LinearLayout fill_parent wrap_content
나는 그것을 볼 수 있습니다.LinearLayout의 전체 높이를 확장하지 않습니다.ScrollView왜냐하면 이클립스에서는Android Layout Editor를 ScrollView에서) 을 아래로 표시되지만 (으)로 하면 (으)ㄹ 수 있습니다.LinearLayout강조 표시가 화면 하단으로 확대되지 않습니다.어떻게 하면 그렇게 할 수 있을까요?
제가 달성하고자 하는 효과는 텍스트와 그 아래에 버튼이 있는 것입니다(내부).LinearLayout4단계에서는 버튼 하나만 있습니다.)텍스트는 스크롤 막대가 필요할 정도로 클 수 있으며, 이 경우 사용자가 버튼을 보려면 아래로 스크롤해야 합니다.텍스트가 스크롤 막대를 사용하기에 충분히 크지 않은 경우, 저는 그것을 원합니다.LinearLayout화면 하단에 부착할 수 있는 버튼이 포함되어 있습니다.
처음에는 전체 XML을 게시하지 말아야 한다고 생각했습니다. 왜냐하면 질문에 엄청난 양의 코드를 표시하는 것은 대개 거절이기 때문입니다.그러나 필요할 수도 있으므로 전체 레이아웃은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/video_layout"
android:focusable="true"
style="@style/VideoLayout">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="@android:drawable/ic_media_play"
android:foregroundGravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/video_thumb"
android:padding="5dip"
android:background="#454545"/>
</FrameLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
style="@style/VideoTitle"
android:id="@+id/video_title"
android:layout_gravity="center"
android:layout_weight="1"/>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<!-- this ScrollView expands the full height of the screen.
However, the next LinearLayout does not expand the full height of the ScrollView -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:layout_gravity="fill"
android:orientation="vertical"
android:id="@+id/info_layout">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/info_body"
style="@style/InfoText"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
style="@android:style/ButtonBar">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="@string/button_readmore"
android:id="@+id/btn_read_more"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
내가 의지한 순간에android:layout_gravity="bottom"가 있는 .LinearLayout어떤 일이 있어도 버튼이 화면 하단에 붙게 됩니다.하지만 이것은 또한 화면의 아래쪽에 텍스트를 붙이게 합니다. 이것은 정확히 제가 찾던 것이 아닙니다.
업데이트: 스크래치,android:layout_gravity="bottom".ScrollView스크롤할 수 없습니다.다른 아이디어?
결국 내 스스로 해결책을 찾았습니다.문제는 그것에 있지 않았습니다.LinearLayout하지만 그것과 함께ScrollView((으)ㄹ 수 있다는 이상합니다.ScrollView 확장하는 동안.LinearLayout그렇지 않았습니다).
은 솔션은다같습다니과를 사용하는 이었습니다.android:fillViewport="true"에서.ScrollView.
는 이 게시물이 오래된 . 하기 싫은 사람들을 사용하고 싶지 않은 사람들을 위해.android:fillViewport="true"키보드 위에 편집 텍스트가 표시되지 않는 경우가 있기 때문입니다.선형 레이아웃 대신 상대 레이아웃을 사용하면 목적을 해결할 수 있습니다.
레이아웃 xml을 제공할 수 있습니까?그렇게 하면 사람들이 최소한의 노력으로 문제를 재현할 수 있습니다.
설정해야 할 수도 있습니다.
android:layout_weight="1"
확장할 항목의 경우
해결책은 다음과 같습니다.
android:fillViewport="true"
Scroll 보기에서, 그리고 사용해 보세요.
"wrap_content"에 "fill_parent"~하듯이"fill_parent"
지금은 더 이상 사용되지 않습니다.
저는 이것을 얻는데 동적으로 사용했습니다.선형 레이아웃이 있고 이 안에서 ScrollView를 자식으로 사용합니다.그런 다음 다시 선형 레이아웃을 사용하여 원하는 보기를 이 선형 레이아웃에 추가한 다음 이 선형 레이아웃을 스크롤 보기에 추가하고 마지막으로 이 스크롤 보기를 선형 레이아웃에 추가합니다.그러면 ScrollView에서 스크롤을 받을 수 있으며 아무것도 표시되지 않습니다.
선형 레이아웃(상위)--스크롤 뷰(선형 레이아웃의 하위)--선형 레이아웃(스크롤 뷰의 하위)--여기에 원하는 텍스트 뷰, 버튼, 스피너 등을 추가합니다.그런 다음 이 선형 레이아웃을 ScrollView에 추가합니다.ScrollView에 대해 하나의 CHILD만 적용되고 마지막으로 이 ScrollView를 선형 레이아웃에 추가합니다.정의된 영역이 화면 크기에서 초과되면 ScrollView 내에 Scroll이 표시됩니다.
나의 경우, 나는 그것을 주지 않았습니다.
선형 레이아웃의 방향(스크롤 뷰의 하위)
따라서 기본적으로 수평이 필요하지만 스크롤 뷰가 수직으로 스크롤되므로 'scroll:orientation="schild"가 ScrollView의 Child(LinearLayout의 경우)로 설정되어 있는지 확인하십시오.
누군가에게 도움이 되기를 바라는 것이 제 경우였습니다.
.
여기 있는 모든 대답들이 저에게 효과가 없었습니다.완벽한 답변을 위해 수행하고자 하는 작업을 요약하면 다음과 같습니다.장치의 뷰포트를 채우는 ScrollView가 있으므로 레이아웃 xml에서 fillViewport를 "true"로 설정합니다.그런 다음 ScrollView 내부에는 다른 모든 항목이 포함된 선형 레이아웃이 있으며 선형 레이아웃은 상위 ScrollView만큼 높아야 합니다. 따라서 선형 레이아웃의 맨 아래에 있어야 하는 항목은 실제로 화면의 맨 아래(또는 ScrollView의 맨 아래)에 있습니다.선형 레이아웃의 콘텐츠가 화면보다 높은 경우.
activity_main.xml 레이아웃 예:
<ScrollView
android:id="@+id/layout_scrollwrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:layout_alignParentTop="true"
android:layout_above="@+id/layout_footer"
>
<LinearLayout
android:id="@+id/layout_scrollwrapper_inner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
...content which might or might not be higher than screen height...
</LinearLayout>
</ScrollView>
그런 다음 활동의 작성에서 선형 레이아웃의 레이아웃이 완료될 때까지 "기다린" 다음(부모 레이아웃도 이미 완료되었음을 의미) 최소 높이를 ScrollView의 높이로 설정합니다.따라서 ScrollView가 전체 화면 높이를 차지하지 않는 경우에도 작동합니다.전화하든 말든.post(...)ScrollView(스크롤 보기) 또는 내부 선형 레이아웃(LinearLayout)에서는 큰 차이가 나지 않습니다. 둘 중 하나가 작동하지 않으면 다른 하나를 시도하십시오.
public class MainActivity extends AppCompatActivity {
@Override // Activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayoutWrapper = findViewById(R.id.layout_scrollwrapper_inner);
...
linearLayoutWrapper.post(() -> {
linearLayoutWrapper.setMinimumHeight(((ScrollView)linearLayoutWrapper.getParent()).getHeight());
});
}
...
}
슬프게도 xml 전용 솔루션은 아니지만 충분히 작동합니다. 다른 고문을 당한 안드로이드가 이 문제의 해결책을 찾는 데 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/2599837/linearlayout-not-expanding-inside-a-scrollview
'programing' 카테고리의 다른 글
| 템플릿 엔진을 사용하지 않고 부팅 (0) | 2023.07.31 |
|---|---|
| Spring boot - 로그인 후 사용자 객체 반환 (0) | 2023.07.31 |
| getElementsByClassName을 통해 올바르게 반복하는 방법 (0) | 2023.07.26 |
| Tomcat/Spring 부트 다시 로드 META-INF/resources/jsp 파일(라이브 업데이트) (0) | 2023.07.26 |
| SQL 또는 MySQL에서 JOIN 키워드를 사용하지 않는 조인에 문제가 있습니까? (0) | 2023.07.26 |