ScrollView不在视野范围内

时间:2015-05-07 11:22:12

标签: android android-layout scroll

我在线性布局中尝试了scrollview,这个线性布局权重是40%,但是在scrollview中添加更多元素时,linearlayout扩展了它的高度而不是在scrollview中添加滚动条,Heres是我的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="100"  
 >
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="20" 
    android:orientation="vertical"/> 

    <LinearLayout
    android:layout_width="match_parent"
   android:layout_height="wrap_content"   

   android:id="@+id/new_list1"
   android:orientation="vertical"
   android:weightSum="20"
   android:layout_weight="40" 
   ></LinearLayout>

<LinearLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:id="@+id/list"
   android:orientation="vertical"
   android:layout_weight="40" 
   ></LinearLayout>
</LinearLayout>

MyActivityCode

       LinearLayout OuterList  = (LinearLayout)                   
      findViewById(R.id.list);

    LinearLayout OuterScroll = new LinearLayout(context);
    OuterScroll.setOrientation(LinearLayout.VERTICAL);

   for(int i = 0; i<= 10 ; i++)
   {
      LinearLayout childLayout = new LinearLayout(context);
      LinearLayout.LayoutParams trlpChildOuter = new 
      LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT,30f);
      OuterScroll.addView(childLayout,trlpChildOuter)

    }


    ScrollView scroll = new ScrollView(context);        
    LinearLayout.LayoutParams Params = new       
    LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,     
     LayoutParams.MATCH_PARENT,100f);
    scroll.addView(OuterScroll, Params);


    LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT,10
0f);

    OuterList.addView(scroll, rps);

4 个答案:

答案 0 :(得分:2)

您可以在xml文件中添加该scrollview。为什么要添加 Activity.java 文件。如果你在xml文件中添加它工作正常。我尝试了这个它正在为我工​​作。

答案 1 :(得分:1)

根据我的理解,你想要将你的外部视图放在手机高度的某个位置,然后如果它们溢出那个外部视图,你想要用滚动条适合10个视图,对吗?

要做到这一点,你的ScrollView必须是固定的高度,例如MATCH_PARENT。因为页面之前已被分割,所有其他外部视图已经具有固定高度,并且由于高度是固定的,ScrollView将在内部显示滚动条以为其内容腾出空间。

在您的代码rps param中,必须是:

LinearLayout.LayoutParams rps = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 100f);

布局权重不是百分比值,而是浮点数,表示兄弟元素的相对大小。例如,将两个视图放在容器中,其中第一个具有权重1.0,第二个具有权重2.0,第二个将是第一个的两倍。看What does android:layout_weight mean?

答案 2 :(得分:0)

ScrollView的高度设为MATCH_PARENT

答案 3 :(得分:0)

尝试通过此.xml布局代码查看相同或正常工作的代码尝试此代码 没有必要以编程方式执行此操作。

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
    android:orientation="vertical" >

   <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    ></LinearLayout>

<ScrollView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#000000"
    android:layout_weight="1"
    >

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:orientation="vertical" 
        ></LinearLayout> 
</ScrollView>
</LinearLayout>