2つのActivity
sを持つFragment
を取得しました(1つは通常のリストです)。そして、通常の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"、私はあなたに問題を見せたいです。
しかし、写真を投稿するほどの評判はありません。ごめんなさい!
間違っていない場合、ViewGroup
の高さ(あなたの場合はLinearLayout
の高さ)、つまりScrollView
内の(唯一の)子は、常にwrap_contentとして解釈されます。そのコンテンツはScrollView
の高さ(スクロールバー)よりも大きくなる可能性があるためです。
これは、コンテンツがより小さいの場合、ScrollView
のコンテンツ(子)が画面いっぱいに広がるとは限らないことも意味します。
この問題を視覚的に解決するには、問題のスクリーンショットを確認する必要があります。
たぶんAndroid:fillViewport="true"
上のScrollView
は問題を修正します:
<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" >
ScrollView
に属性を追加します。
Android:fillViewport="true"
inflater.inflate(R.layout.menu_content_main, container);
あるべき
inflater.inflate(R.layout.menu_content_main, container, false);
同様の問題があり、ヘルパークラスでしか修正できませんでした。元のコードをオンラインで見つけました。これが私の実装です。
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);
}
}
<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" />