我想写一个动态添加视图的类,如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());
}
}
答案 0 :(得分:1)
您应该在scrollView中实现horizontalScrollView。并在那个horizontalScrollView添加按钮。那么它将是垂直和水平可滚动的。但为此您应该了解和ScrollView。因为他们只有一个直接的子布局。这是一个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和horizontalScrollView如何在xml中工作的演示。如果你还有疑问,请告诉我。