如何从 Android 中的库项目生成视图
How to generate view from library project in Android
我的要求是根据库中的响应类型生成视图。库必须 return 基于响应是图像还是文本的单一视图(创建应该在库内进行)。我已经创建了库项目,解析了响应,但我不确定如何 return 从库项目到正在实施的应用程序的视图。
我应该在库中创建自定义视图 class 并使用侦听器并成功添加正在实现库的 UI 吗?
我该如何解决这个问题,我们将不胜感激。
谢谢,
山西
当您创建自定义视图时,骨架看起来像这样
public abstract class YourClass extends View {
private Context context;
public YourClass(Context context) {
super(context);
initialize(context);
}
public YourClass(Context context, AttributeSet attrs) {
super(context, attrs);
initialize(context);
}
public YourClass(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialize(context);
}
private void abstract initialize(Context context);
// PROVIDE IMPLEMENTATION BASED ON RESPONSE
}
然后制作具体的 class 来扩展这个 class
eq
ImageClass extends Your class{
public void initialize(Context context)
{
View view = inflate(context, R.layout.imageViewLayout , this);
}
}
或
TextClass extends Your class{
public void initialize(Context context)
{
View view = inflate(context, R.layout.textViewLayout , this);
}
}
编辑
HERE is a tutorial for reference How to make library project
同样,返回视图的方式可能不同。
您可以在 constructor 中传递一些值,并且根据该值您可以在 initialize() 方法中膨胀视图,在那里您不需要几个子 classes 但这将是一个紧密耦合的设计。
希望能帮助到你。
我的要求是根据库中的响应类型生成视图。库必须 return 基于响应是图像还是文本的单一视图(创建应该在库内进行)。我已经创建了库项目,解析了响应,但我不确定如何 return 从库项目到正在实施的应用程序的视图。 我应该在库中创建自定义视图 class 并使用侦听器并成功添加正在实现库的 UI 吗?
我该如何解决这个问题,我们将不胜感激。
谢谢, 山西
当您创建自定义视图时,骨架看起来像这样
public abstract class YourClass extends View {
private Context context;
public YourClass(Context context) {
super(context);
initialize(context);
}
public YourClass(Context context, AttributeSet attrs) {
super(context, attrs);
initialize(context);
}
public YourClass(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialize(context);
}
private void abstract initialize(Context context);
// PROVIDE IMPLEMENTATION BASED ON RESPONSE
}
然后制作具体的 class 来扩展这个 class
eq
ImageClass extends Your class{
public void initialize(Context context)
{
View view = inflate(context, R.layout.imageViewLayout , this);
}
}
或
TextClass extends Your class{
public void initialize(Context context)
{
View view = inflate(context, R.layout.textViewLayout , this);
}
}
编辑
HERE is a tutorial for reference How to make library project
同样,返回视图的方式可能不同。
您可以在 constructor 中传递一些值,并且根据该值您可以在 initialize() 方法中膨胀视图,在那里您不需要几个子 classes 但这将是一个紧密耦合的设计。
希望能帮助到你。