通过Java代码添加时,滚动视图无法正常工作

时间:2017-04-22 10:31:52

标签: java android scrollview relativelayout

RelativeLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    layout = new RelativeLayout(this);
    setContentView(layout);

    ScrollView sc = new ScrollView(this);
    sc.setBackgroundColor(Color.YELLOW);
    sc.setLayoutParams(layoutParams(300, RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.ALIGN_PARENT_RIGHT));

    RelativeLayout rl = new RelativeLayout(this);
    rl.setBackgroundColor(Color.CYAN);
    rl.setLayoutParams(layoutParams(300, RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.ALIGN_PARENT_RIGHT));


    int k=0;
    for(int i=0;i<15;i++){
        ImageView iv1 = new ImageView(this);
        iv1.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));
        iv1.setLayoutParams(layoutParams(200, 200,0));
        iv1.setTranslationY(k);
        k+=200;
        rl.addView(iv1);
    }
    sc.addView(rl);
    layout.addView(sc);
}

public RelativeLayout.LayoutParams layoutParams(int width,int height,int rule1){
    RelativeLayout.LayoutParams lpb = new RelativeLayout.LayoutParams(width,height);
    if(rule1 != 0){
        lpb.addRule(rule1);
    }
    return lpb;
}

Output of code

当我在没有ScrollView的情况下使用RelativeLayout时,它会显示所有图像,但是当我使用ScrollView时,它没有显示所有图像。
请检查代码中的问题在哪里。

它应该在ScrollView中正确对齐。 Desired output

所需输出的XML代码,我试图在java代码中进行转换。

<ScrollView
    android:layout_width="300px"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true" >

    <RelativeLayout
        android:layout_width="300px"
        android:layout_height="fill_parent"
        android:background="@android:color/holo_purple" >

        <ImageView
            android:id="@+id/iv1"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@drawable/ic_action_home" />

        <ImageView
            android:id="@+id/iv2"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_below="@+id/iv1"
            android:src="@drawable/ic_action_home" />

        <ImageView
            android:id="@+id/iv3"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_below="@+id/iv2"
            android:src="@drawable/ic_action_home" />

        <ImageView
            android:id="@+id/iv4"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_below="@+id/iv3"
            android:src="@drawable/ic_action_home" />
    </RelativeLayout>
</ScrollView>

1 个答案:

答案 0 :(得分:0)

ScrollView FrameLayout ,这意味着您应该在其中放置一个孩子,其中包含要滚动的全部内容;这个孩子本身可能是一个 ayout manager ,具有复杂的对象层次结构

因此,当您使用相对布局时,它正在显示图像,但是当您使用的滚动视图不包含一个布局下的所有图像时它不起作用,因此请尝试将所有图像放在下LinearLayout (推荐)或其他布局。