Android动态添加View
2019-04-10 本文已影响0人
duyi324
这里以创建一个ImageView
为例
1. 首先创建对象
ImageView newImg = new ImageView(getContext());
2. 设置对应的属性
//设置想要的图片,相当于android:src="@drawable/image"
newImg.setImageResource(R.drawable.image);
newImg.setScaleType(ImageView.ScaleType.FIT_CENTER);
3. 创建布局参数
设置子控件在父容器中的位置布局,wrap_content,match_parent
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
也可以设置自己想要的宽度,参数(int width, int height)
均表示px
如果是dp单位,需要先获取屏幕的分辨率再求出密度
根据屏幕ppi=160
时,1px=1dp
则公式为 dp * ppi / 160 = px ——> dp * dendity = px
如设置为48dp:1、获取屏幕的分辨率 2、求出density 3、设置
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
float density = displayMetrics.density;
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
(int) (48 * density),
(int) (48 * density));
4. 设置其他参数
以下代码相当于android:layout_marginLeft="8dp"
params.leftMargin = 8;
params.bottomMargin = 10;
5. 添加布局
-
addView(View child)
,默认往已有的view后面添加,后插入,如果不设置布局params
默认为wrap_content
mLayoutContainer.addView(newImg);
-
addView(View child, LayoutParams params)
,往已有的view后面添加,后插入,并设置布局
mLayoutContainer.addView(newImg, params1);
-
addView(View view, int index, LayoutParams params)
,在某个index
处插入
mLayoutContainer.addView(newImg, 0, params1);