简体   繁体   English

android-在滚动视图中添加n个视图

[英]android - add n number of views in scroll view

i am designing an app for android tablets. 我正在为Android平板电脑设计一个应用程序。 I have created a layout file which contains the application bar, next is some buttons. 我创建了一个包含应用程序栏的布局文件,接下来是一些按钮。 In the middle of the screen i want to have a horizontal scroll view inside which i need to show some images. 在屏幕中间,我想要一个水平滚动视图,在其中需要显示一些图像。

The number of images inside the scroll view depends upon the return data from the url. 滚动视图内的图像数量取决于url返回的数据。 For this i am maintaining an array list. 为此,我要维护一个数组列表。 According to the size of the array i need to create the image views withing the scroll view. 根据数组的大小,我需要与滚动视图一起创建图像视图。

I have placed all other buttons, textviews in the layout file and i need to make the above said view alone through coding , how to do this. I have placed all other buttons, textviews in the layout file and i need to make the above said view alone through coding ,如何执行此操作。

If the array size is 19, then the list of images within scroll view to be shown in the following order only 如果数组大小为19,则滚动视图中的图像列表仅按以下顺序显示

1  4  7  10  13  16  19
2  5  8  11  14  17    
3  6  9  12  15  18      

In iPad iBook apps library page, the books will be listed out in this way. 在iPad iBook应用程序库页面中,书籍将以这种方式列出。

how to do this.... 这个怎么做....

not sure but can try approach like this 不确定,但是可以尝试这样的方法

1- Create/inflate a horizontal scrollview ..
2- make for loop running i= 0 to x 
        where x= (totalCount/3)+(totalCount%3>0?1:0)
3- Create a  Linear layout with orientation vertical  
4- create one more loop form j=0 to 3 or (i+1)*3+j< totalCount
5- add your element layout in  Linear layout 
6 after the inner loop closed add Linear layout in horizontal scroll-view
  • loop termination condition like the value of x may not be exact please check them 诸如x的值之类的循环终止条件可能不准确,请检查它们

For making item clickable 用于使项目可点击

1- take any view from  element layout like in you case image-view is good option  
 2- creates a class in you activity or better to extend you activity with clickListner.
 3- while creating the imageView for each element set this listener to all
 4- Set the data object or index  with element with image-view in tad using SetTag
 5- in Onclick function you will get image-view as argument and use getTag to get that data of attached with clicked element   

Thanks to Dheeresh Singh 感谢Dheeresh Singh

Following is my main.xml file 以下是我的main.xml文件

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/linear_1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal" >
        </LinearLayout>
</HorizontalScrollView>

i have my Horizontal scroll view in my main.xml file 我的main.xml文件中有Horizontal scroll view

public class LayoutActivity extends Activity 
//implements OnClickListener
{
    ViewGroup layout;
    LinearLayout lr;

    int x;
    int total = 4;
    int count = 0;
    LinearLayout lay;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        count = 0;
        layout = (ViewGroup)findViewById(R.id.linear_1);
        x = (total/3)+(total%3 > 0?1:0);;
        for(int i = 0; i < x; i++)
        {
            lr = new LinearLayout(this);
            lr.setOrientation(LinearLayout.VERTICAL);
            layout.addView(lr);
            for(int j = 0; j < 3; j++ )
            {
                count++;
                final View child = getLayoutInflater().inflate(R.layout.inflateview, null);
                lay = (LinearLayout)child.findViewById(R.id.threeByThree_tableRow1_1_Layout1);
                lay.setOnClickListener(new View.OnClickListener() 
                {   
                    @Override
                    public void onClick(View v) 
                    {
                        Toast.makeText(getApplicationContext(), "selected  id  is "+child.getId(), Toast.LENGTH_SHORT).show();
                    }
                });
                lr.addView(child);
                child.setId(count);
                if(i == total)
                {
                    break;
                }
            }
        }      
    }
}

in the above code i have lr is the LinearLayout to display it in vertical order and View child is the data which i need to show in both vertical and horizontal order. 在上面的代码中,我有lr是LinearLayout以垂直顺序显示它,而View child是我需要同时以垂直和水平顺序显示的数据。

Thanks a lot Dheeresh Singh 非常感谢Dheeresh Singh

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM