这是交易。
我正在查看有关扩展ImageView的代码:
http://marakana.com/forums/android/examples/98.html
我想知道如何将新视图添加到现有的xml布局文件以及其他一些视图。
我已经在主线性布局中做到了这一点:
<FrameLayout android:id="@+id/FrameLayout01" android:layout_width="300dp" android:layout_height="300dp">
<com.marakana.Rose android:layout_height="wrap_content" android:layout_width="wrap_content"/>
但问题是这样就不会调用onDraw方法。
有人可以为此建议解决方案吗?也许是一些将CustomViews与xml布局结合起来的例子。
TNX。
答案 0 :(得分:2)
您是否在 res / values / attrs.xml 添加了定义?
<declare-styleable name="Rose">
</declare-styleable>
如果您不添加任何xml属性,我不确定是否需要...
另外,如果您发布了com.marakana.Rose代码,它会有所帮助。举个例子,这是我自己组件的类声明:
public class CalendarCell extends ImageButton implements OnTouchListener
onDraw:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
这是我的xml布局的片段:
<TableRow>
<com.view.customcomponents.CalendarCell
style="@style/NumericImageButton"
android:id="@+id/calendar_row1_col1"
android:background="@drawable/calendar_bg_selector" />
我之前通过教程做了这个,但我不记得在哪里。另外,我可能会遗漏一些东西。谷歌一点点,你会发现有用的资源。
编辑:我认为这些是我所遵循的教程,但我不得不付出一些努力才能最终实现:
答案 1 :(得分:0)
我想我解决了。我在main.xml文件中使用了我的代码并且它可以工作。我必须做的是覆盖一个新的类构造函数,接受AttributesSet以及上下文作为参数,然后使用findViewById(CustomViewName)在活动中引用它并使用CustomView中定义的函数。
答案 2 :(得分:0)
要允许Android Developer Tools与您的视图进行交互,您必须至少提供一个构造函数,该构造函数将 Context和AttributeSet 对象作为参数。此构造函数允许
layout editor to create and edit an instance of your view.
class PieChart extends View {
public PieChart(Context context, AttributeSet attrs) {
super(context, attrs);
}
}