ScrollView 레이아웃이 전체 화면을 채우지 않습니다.
나는 Activity
두 개의 Fragment
s (하나의 목록 하나의 정상)를 얻었습니다 . 정상 Fragment
이 팽창 Scrollview
함유 LineaLayout
(수직)이 레이아웃을 포함 TextViews
. ScrollView
와 layout_width
와 layout_height
있습니다 match_parent
내가 생각하는, 그래서 전체 화면이 사용되어야한다. 그러나 바닥에는 여전히 "간격"이 있습니다. 당신이 나를 도울 수 있기를 바랍니다.
ScrollView.xml
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/titlescreen_bg"
android:orientation="vertical"
android:paddingTop="60dp"
tools:context=".MainActivity" >
<TextView
android:id="@+id/tv_headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingBottom="60dp"
android:paddingTop="60dp"
android:textIsSelectable="false"
android:textSize="@dimen/fontsize_slogan_titlescreen" />
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:paddingBottom="30dp"
android:paddingTop="30dp"
android:textIsSelectable="false"
android:textSize="@dimen/fontsize_slogan_titlescreen" />
</LinearLayout>
</ScrollView>
이 레이아웃을 확장하는 프래그먼트.
package wak.iage.layout;
import wak.iage.R;
import android.app.Fragment;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MenuContentFragment extends Fragment
{
LinearLayout.LayoutParams relativeParams = new LinearLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
LinearLayout topLayout = null;
TextView body = null;
TextView head = null;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.menu_content_main, container);
return v;
}
public void changeText(String title, String content) {
topLayout = (LinearLayout) getActivity().findViewById(
R.id.LinearLayout1);
head = (TextView) getActivity().findViewById(R.id.tv_headline);
body = (TextView) getActivity().findViewById(R.id.tv_content);
if (body == null) {
topLayout.removeViews(1, topLayout.getChildCount() - 1);
body = new TextView(getActivity().getApplicationContext());
body.setPadding(0, 30, 0, 20);
body.setTextColor(Color.BLACK);
body.setTextSize(22);
body.setGravity(Gravity.CENTER_HORIZONTAL);
topLayout.addView(body, relativeParams);
}
body.setText(content);
head.setText(title);
}
public void addGlossary() {
if (body != null) {
topLayout.removeView(body);
}
int i = 0;
for (int id : GLOSSARY) {
TextView glossary = new TextView(getActivity()
.getApplicationContext());
glossary.setText(getString(id));
glossary.setTextColor(Color.BLACK);
if (i % 2 == 0) {
glossary.setTypeface(Typeface.DEFAULT_BOLD);
glossary.setTextSize(22);
glossary.setPadding(0, 10, 0, 10);
}
topLayout.addView(glossary, relativeParams);
i += 1;
}
}
public static final int[] GLOSSARY = {
R.string.GlossaryAndroidOSTitle, R.string.GlossaryAndroidOSContent,
R.string.GlossaryAppTitle, R.string.GlossaryAppContent,
R.string.GlossaryCloudTitle, R.string.GlossaryCloudContent,
R.string.GlossaryDonwloadTitle, R.string.GlossaryDonwloadContent,
R.string.GlossaryFacebookTitle, R.string.GlossaryFacebookContent,
R.string.GlossaryGPSTitle, R.string.GlossaryGPSContent,
R.string.GlossaryHomescreenTitle,
R.string.GlossaryHomescreenContent, R.string.GlossaryPasswordTitle,
R.string.GlossaryPasswordContent, R.string.GlossaryRouterTitle,
R.string.GlossaryRouterContent, R.string.GlossarySDTitle,
R.string.GlossaySDContent, R.string.GlossayStandbyTitle,
R.string.GlossayStandbyContent, R.string.GlossaryTabletTitle,
R.string.GlossaryTabletContent, R.string.GlossaryTouchscreenTitle,
R.string.GlossaryTouchscreenContent, R.string.GlossayWidgetsTitle,
R.string.GlossayWidgetsContent, R.string.GlossayWLANTitle,
R.string.GlossayWLANContent };
}
감사합니다.
편집 : 문제가 이미 해결되었습니다 : android : fillViewPort = "true", 문제를 보여 드리고 싶습니다.
그러나 나는 사진을 올릴만큼 충분한 평판이 없다. 죄송합니다!
If i'm not mistaken, the ViewGroup
's height (LinearLayout
's height in your case), that is the (only) child inside a ScrollView
, is always interpreted as wrap_content, since that content can be larger than the ScrollView
's height (hence the scrollbars).
This also means that if the content is smaller, the ScrollView
's content (child) may not necessarily stretch to fill the screen.
In order to visually help you fix this, we need to see a screenshot of your problem.
Maybe setting android:fillViewport="true"
on the ScrollView
will fix your issue:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:fadeScrollbars="false"
android:scrollbars="vertical" >
In your ScrollView
add an attribute ie.
android:fillViewport="true"
inflater.inflate(R.layout.menu_content_main, container);
should be
inflater.inflate(R.layout.menu_content_main, container, false);
I had a similar problem and could only fix it with a Helper Class. I found the original code online and this is my implementation of it.
Java class:
public class ImageViewHelper extends android.support.v7.widget.AppCompatImageView {
public ImageViewHelper(Context context) {
super(context);
}
public ImageViewHelper(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ImageViewHelper(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Drawable d = getDrawable();
if (d != null) {
int w = MeasureSpec.getSize(widthMeasureSpec);
int h = w * d.getIntrinsicHeight() / d.getIntrinsicWidth();
setMeasuredDimension(w, h);
}
else super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
XML:
<com.example.app.ImageViewHelper
android:id="@+id/img"
android:src="@drawable/start"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true" />
참고URL : https://stackoverflow.com/questions/15094928/scrollview-layout-does-not-fill-the-whole-screen
'Programing' 카테고리의 다른 글
Query if Android database exists! (0) | 2020.11.19 |
---|---|
하단을 제외하고 선형 레이아웃 주위에 테두리를 추가하는 방법은 무엇입니까? (0) | 2020.11.19 |
How to get file path using Storage facade in laravel 5? (0) | 2020.11.19 |
UINavigationBar에서 UIBarButtonItem의 위치 변경 (0) | 2020.11.19 |
C # : 메모리 부족 예외 (0) | 2020.11.19 |