我觉得好像我以前知道如何做到这一点,但我目前正在画一个空白。我有一个从 View ( Card
) 扩展的类,我用 XML 为它编写了一个布局。我想要做的是Card
在构造函数中将 View 设置为 XML View,这样我就可以使用Card
set中的方法等等TextView
。有什么建议么?下面的代码:
Card.java :(我有View.inflate(context, R.layout.card_layout, null);
一个我想做的例子,但它不起作用。我基本上希望该类成为视图的接口,为了做到这一点,我需要以某种方式分配 XML 布局到视图。我是否使用类似的东西setContentView(View view)
?类中没有这样的方法View
,但是有类似的东西吗?)
public class Card extends View {
TextView tv;
public Card(Context context) {
super(context);
View.inflate(context, R.layout.card_layout, null);
tv = (TextView) findViewById(R.id.tv);
}
public Card(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
View.inflate(context, R.layout.card_layout, null);
tv = (TextView) findViewById(R.id.tv);
}
public Card(Context context, AttributeSet attrs) {
super(context, attrs);
View.inflate(context, R.layout.card_layout, null);
tv = (TextView) findViewById(R.id.tv);
}
public void setText(String text) {
tv.setText(text);
}
}
card_layout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="336dp"
android:layout_height="280dp"
android:layout_gravity="center"
android:background="@drawable/card_bg"
android:orientation="vertical" >
<TextView
android:id="@+id/tv"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:textSize="24dp"
/>
</LinearLayout>