1

我真的对自定义视图感到困惑。

我需要定义一个自定义视图,由一个ImageView和一个TextView. 然后我想根据我已经完成的 php json 响应更改此视图的内容。

首先,我应该走哪条路:

1)将自定义视图定义为 XML,然后“膨胀”、复制等,然后更改新实例化的文本和图像源等?

2)将自定义视图定义为Java类,并实例化它?

最后,我想将我的自定义视图实例化为垂直布局的子视图。

我目前正在尝试的是 path # 2。我定义了这个类:

public class ArizaSatiri extends LinearLayout { 
    TextView arizaTitle;    
    //constructor :
    public ArizaSatiri(Context context, AttributeSet attrs)
    {
        super(context, attrs);        
        // add title , description etc : 
        arizaTitle = new TextView(context);
        arizaTitle.setText("abcef defefef");
        this.addView(arizaTitle);        
    }    
}

然后我在我的主要活动中尝试了这个:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_arizalarim);

        ArizaSatiri as = new ArizaSatiri(getApplicationContext(), attrSet);
    }

但我不知道如何构造一个 AttributeSet。

所以请告诉我,我应该选择哪条路径,以及如何动态地实例化自定义视图,我想多少次都可以?

4

1 回答 1

1

当您通过 xml 添加组件时,会构造属性集。您必须在 attrs.xml 中定义自定义组件的属性。(http://www.vogella.com/articles/AndroidCustomViews/article.html#additional_attributes

如果您不想从 xml 创建视图,则只需从构造函数中删除属性集,因为 LinearLayout 有一个没有 attr 集的构造函数:http: //developer.android.com/reference/android/widget/LinearLayout.html#LinearLayout (android.content.Context)

于 2013-11-05T12:04:15.493 回答