Android CustomView没有';行不通
我尝试使用一个表示domino的自定义视图类,遵循answer的解决方案。无错误,应用程序运行但未显示任何内容。由于它与链接中引用的问题非常相似,我想这只是一个小问题,但我没有在代码中找到错误 Domino.java文件:Android CustomView没有';行不通,android,Android,我尝试使用一个表示domino的自定义视图类,遵循answer的解决方案。无错误,应用程序运行但未显示任何内容。由于它与链接中引用的问题非常相似,我想这只是一个小问题,但我没有在代码中找到错误 Domino.java文件: package com.example.android.dominoneu; import android.content.Context; import android.widget.LinearLayout; public class Domino extends
package com.example.android.dominoneu;
import android.content.Context;
import android.widget.LinearLayout;
public class Domino extends LinearLayout {
public Domino(Context context){
super(context);
}
}
domino.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<com.example.android.dominoneu.Domino xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:Domino="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LEFT"
android:textColor="#000000"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RIGHT"
android:textColor="#000000"/>
</com.example.android.dominoneu.Domino>
将Domino(上下文上下文,属性集属性)
构造函数添加到视图中。XML使用它来创建视图的实例
如果使用xml将Domino(上下文上下文,属性集属性)构造函数添加到视图中,则无需使用addView
手动添加它。XML使用它来创建视图的实例
而且不需要使用addView
手动添加它,如果您使用xml您应该创建这个构造函数
public Domino(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
/*do here all what you want with custom view*/
}
您应该创建这个构造函数
public Domino(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
/*do here all what you want with custom view*/
}
您必须像这样添加所有4个超级构造函数
public class Domino extends LinearLayout {
public Domino(Context context) {
super(context);
}
public Domino(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public Domino(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public Domino(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
您必须像这样添加所有4个超级构造函数
public class Domino extends LinearLayout {
public Domino(Context context) {
super(context);
}
public Domino(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public Domino(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public Domino(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
我可能错了,但您只是在扩展线性布局(这就是您想要的吗?)。
如果希望每次引用Domino视图时都显示自定义布局,则需要在构造函数中展开布局。请参见另一个问题中的以下代码:
public Card(Context context) {
super(context);
View view = LayoutInflater.from(getContext()).inflate(
R.layout.card, null);
this.addView(view);
}
如果使用以下充气方法,则不必像其他问题一样使用“this.addView(view);”
LayoutInflater.from(getContext()).inflate(R.layout.card, this, true);
因此,您的domino.xml如下所示(示例):
您的活动将是相同的(如果您试图动态添加Domino视图),或者在MainActivity布局中引用Domino视图
编码很好。我可能错了,但您只是在扩展线性布局(这就是您想要的吗?)。
如果希望每次引用Domino视图时都显示自定义布局,则需要在构造函数中展开布局。请参见另一个问题中的以下代码:
public Card(Context context) {
super(context);
View view = LayoutInflater.from(getContext()).inflate(
R.layout.card, null);
this.addView(view);
}
如果使用以下充气方法,则不必像其他问题一样使用“this.addView(view);”
LayoutInflater.from(getContext()).inflate(R.layout.card, this, true);
因此,您的domino.xml如下所示(示例):
您的活动将是相同的(如果您试图动态添加Domino视图),或者在MainActivity布局中引用Domino视图
很好的编码。domino.xml不是activity\u main.xml可能这是您的问题domino.xml不是activity\u main.xml可能这是您的问题只有一个带上下文和AttributeSet的构造函数足够只有一个带上下文的构造函数,AttributeSet足够只有一个带上下文的构造函数,AttributeSet足够只有一个带上下文的构造函数属性集是足够的你是对的,这就是我想要的…我混淆了问题(动态添加视图与将其用作xml)你是对的,这就是我想要的…我混淆了问题(动态添加视图与将其用作xml)