我想写一个动态添加视图的类,如button或TextView或

时间:2015-12-28 00:17:00

标签: android arrays android-layout dynamic view

我想写一个动态添加视图的类,如button或TextView或......

我做到了但是有一些问题

1-我想使用一个选项,这意味着我想使用滚动,或者我想在屏幕上显示所有视图。

1-1我想使用滚动(垂直或水平)来显示所有视图。

1-2我想使用 android:layout_weight 来适应相同大小的视图,这些视图在任何尺寸的屏幕上都很漂亮,但我不知道如何。 m =行数 n =列数

2-我不知道这是一个很好的方法来描述一个类来考虑面向对象的概念

在XML文件中,只有 RelativeLayout

班级:

import android.app.ActionBar;
import android.content.Context;
import android.text.Layout;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import java.util.ArrayList;

public class MakeTwoDimensionArrayView {
    private ScrollView scrollView;
    private LinearLayout mainLinearLayout;
    private LinearLayout [] subLinearLayout;
    MakeTwoDimensionArrayView(Context c, int m, int n, ArrayList<?> V){
        scrollView=new ScrollView(c);
        mainLinearLayout=new LinearLayout(c);
        mainLinearLayout.setOrientation(LinearLayout.VERTICAL);
        mainLinearLayout.setLayoutParams(new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        subLinearLayout=new LinearLayout[m];
        scrollView.addView(mainLinearLayout);
        for(int i=0; i<m; i++){
            subLinearLayout[i]=new LinearLayout(c);
            subLinearLayout[i].setOrientation(LinearLayout.HORIZONTAL);
            subLinearLayout[i].setLayoutParams(new ActionBar.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            for(int j=0; j<n; j++){
                int t=i*n+j;
                View v= (View) V.get(t);
                v.setTag(t+"");
                subLinearLayout[i].addView(v);
            }
            mainLinearLayout.addView(subLinearLayout[i]);
        }
    }

    public ScrollView getLayout(){
        return scrollView;
    }
}

主要

public class MainActivity extends AppCompatActivity {

    MakeTwoDimensionArrayView makeButton;
    ArrayList <Button> buttons;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        int m=3, n=2;

        buttons=new ArrayList<Button>();
        for (int i=0; i<m*n; i++){
            Button b=new Button(this);
            buttons.add(b);
        }
        makeButton=new MakeTwoDimensionArrayView(this, m, n, buttons);
        setContentView(makeButton.getLayout());
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

您应该在scrollView中实现horizo​​ntalScrollView。并在那个horizo​​ntalScrollView添加按钮。那么它将是垂直和水平可滚动的。但为此您应该了解enter image description hereScrollView。因为他们只有一个直接的子布局。这是一个XML文件。

<?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:orientation="vertical"
<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="55dip"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/lblListItem"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="5dp"
        android:paddingLeft="?android:attr/expandableListPreferredChildPaddingLeft"
        android:paddingTop="5dp"
        android:textSize="17dip" />

    <HorizontalScrollView
        android:id="@+id/horizontalScrollView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

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

            <Button
                android:id="@+id/item1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableBottom="@drawable/ic_launcher"
                android:text="Item1" />

            <Button
                android:id="@+id/item2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableBottom="@drawable/ic_launcher"
                android:text="Item2" />

            <Button
                android:id="@+id/item3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableBottom="@drawable/ic_launcher"
                android:text="Item3" />

            <Button
                android:id="@+id/item3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableBottom="@drawable/ic_launcher"
                android:text="Item3" />

        </LinearLayout>
    </HorizontalScrollView>

</LinearLayout>
</ScrollView>

如果您想要动态实现然后在MakeTwoDimensionArrayView类和onCreate()活动类中进行更改,那么这只是演示了解scrollView和horizo​​ntalScrollView如何在xml中工作的演示。如果你还有疑问,请告诉我。