美文网首页
Android动态添加View

Android动态添加View

作者: duyi324 | 来源:发表于2019-04-10 14:18 被阅读0次

    这里以创建一个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);
    

    相关文章

      网友评论

          本文标题:Android动态添加View

          本文链接:https://www.haomeiwen.com/subject/wauniqtx.html