ScrollView无法在Android应用中使用

时间:2015-11-18 09:32:01

标签: android android-layout uiscrollview

我有这个布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:id="@+id/root_ll"
        android:orientation="vertical"
        android:gravity="center_horizontal">

    </LinearLayout>

</ScrollView>

下面这个代码隐藏,一切都生成完美但屏幕不可滚动,你能告诉我问题是什么吗?谢谢。

LinearLayout linearLayout= (LinearLayout) findViewById(R.id.root_ll);
for(int i = 0; i < 6 i++)
{
            LinearLayout llInside= new LinearLayout(this);
            llInside.setOrientation(LinearLayout.HORIZONTAL);
            llInside.setLayoutParams(new AbsListView.LayoutParams(
                    AbsListView.LayoutParams.WRAP_CONTENT,
                    AbsListView.LayoutParams.WRAP_CONTENT));
            WebView wView = new WebView(this);


            TextView tvInside = new TextView(this);
                    wView.loadUrl("file:///android_asset/a.gif");
                    setContentView(wView);
                    tvInside.setText("A");

 wView.setLayoutParams(new AbsListView.LayoutParams(
                    600,
                    600));

            tvInside.setTextSize(TypedValue.COMPLEX_UNIT_SP, 74);

            if(wView.getParent()!=null)
                ((ViewGroup)wView.getParent()).removeView(wView);

            if(tvInside.getParent()!=null)
                ((ViewGroup)tvInside.getParent()).removeView(tvInside);

            llInside.addView(wView);
            llInside.addView(tvInside);




            if(llInside.getParent()!=null)
                  ((ViewGroup)llInside.getParent()).removeView(llInside);

            linearLayout.addView(llInside);


            // linearLayout.addView(wView);
            //make visible to program



}
    if(linearLayout.getParent()!=null)
            ((ViewGroup)linearLayout.getParent()).removeView(linearLayout);
        setContentView(linearLayout);

5 个答案:

答案 0 :(得分:3)

您对setContentView()的来电是个问题。该方法设置Activity的布局。每当您的代码调用它时,它都会完全取代活动的内容,而您的ScrollView早已不复存在。删除已发布代码中对setContentView()的所有来电,以及以下内容:

if(linearLayout.getParent()!=null)
    ((ViewGroup)linearLayout.getParent()).removeView(linearLayout);

您还可以删除父View对我们动态创建的View的空检查,因为在您添加父项之前,他们不会有父母。< / p>

LinearLayout linearLayout= (LinearLayout) findViewById(R.id.root_ll);
for(int i = 0; i < 6; i++)
{
    LinearLayout llInside= new LinearLayout(this);
    llInside.setOrientation(LinearLayout.HORIZONTAL);
    llInside.setLayoutParams(new AbsListView.LayoutParams(
                                 AbsListView.LayoutParams.WRAP_CONTENT,
                                 AbsListView.LayoutParams.WRAP_CONTENT));

    WebView wView = new WebView(this);

    TextView tvInside = new TextView(this);
    wView.loadUrl("file:///android_asset/a.gif");

    tvInside.setText("A");

    wView.setLayoutParams(new AbsListView.LayoutParams(
                              600,
                              600));

    tvInside.setTextSize(TypedValue.COMPLEX_UNIT_SP, 74);

    llInside.addView(wView);
    llInside.addView(tvInside);

    linearLayout.addView(llInside);
}

答案 1 :(得分:2)

您已经使用:

android:layout_height="fill_parent";

ScrollView使用:

android:layout_height="wrap_content";

然后它的工作。

答案 2 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:id="@+id/root_ll2"
    android:gravity="center_horizontal">


<ScrollView
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:fillViewport="true">

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:id="@+id/root_ll"
    android:orientation="vertical"
    android:gravity="center_horizontal">

 your buttons ,etc...

</RelativeLayout>

答案 3 :(得分:0)

只需改变一点高度..只需将所有内容改为-------------------------- |if-x-value| x-new-value | -------------------------- | 100 | 0 | -------------------------- | 125 | 5 | -------------------------- | 150 | 10 | --------------------------

wrap_content

确保整个内容高度超过屏幕高度。

修改

由于WebViews是可滚动的。您只需使用<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:fillViewport="true"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/root_ll" android:orientation="vertical" android:gravity="center_horizontal"> </LinearLayout> ..此处无需使用ScrollView。

答案 4 :(得分:0)

试试这个,它正在运作

   <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/root_ll"
        android:orientation="vertical"
        android:gravity="center_horizontal">

         <TextView
            android:id="@+id/txtHeaderTitle"
            android:layout_width="wrap_content"
            android:layout_height="1000dp"
            android:text="Hello World"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

    </LinearLayout>

</ScrollView>