创建动态元素自定义

时间:2017-12-05 04:40:04

标签: java android xml

我有一个自定义ImageView并且如果我在我的activity.xml中添加我的元素,则可以工作,但如果我尝试创建动态元素,则无法工作。

编辑:的解决

Here the repo

注意:不要执行onDraw方法

活动类

val xpp = resources.getXml(R.xml. octocat)

        val attr = Xml.asAttributeSet(xpp)



        val octocat :  OctocatView = OctocatView(this,attr)
        octocat.invalidate()
        val layout : LinearLayout = findViewById(R.id.layout)

        layout.addView(octocat)

** Java Class **

public class OctocatView extends android.support.v7.widget.AppCompatImageView{

    private Context mContext;

    public OctocatView(Context context, AttributeSet attrs, int defStyleAttr, Context mContext) {
        super(context, attrs, defStyleAttr);
        this.mContext = mContext;

    }

    public OctocatView(Context context, AttributeSet attrs)  {
        super(context, attrs);
        mContext = context;
    }

    public OctocatView(Context context) {
        super(context);
        mContext = context;

    }


    protected void onDraw(Canvas c) {
       //some code
    }

}

元素XML res/xml/octocat.xml

<hackro.tutorials.com.salesfacebook.widget.OctocatView android:layout_height="match_parent"
    android:layout_width="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" />

1 个答案:

答案 0 :(得分:1)

在将View添加到LinearLayout之前,尝试以编程方式设置octocat.layoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) layout.addView(octocat) 的大小:

@media (max-width: 500px) {
    .dropdown-menu{
          height:200px;
          overflow-y:auto;
       }
    }