我知道此问题之前已经得到解答,但回复对我没什么帮助。
我有两个自定义视图,一个我需要插入一个LinearLayout,这是有效的,但我需要插入另一个,从customview到customview我不明白什么是正确的方法。我有一个项目要完成,一个记忆游戏,第一个自定义视图是一个tablerow,第二个将是一个imageview,以便能够动态更改内容。这是我的第一个自定义视图的代码。
package com.example.memorymind;
import java.util.zip.Inflater;
import com.example.game.Card;
import com.example.game.Game;
import com.example.game.Skin;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.opengl.Visibility;
import android.text.method.HideReturnsTransformationMethod;
import android.util.AttributeSet;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class ViewGrid extends LinearLayout{
class Layout {
public Layout() {
imageView1 = (ImageView)findViewById(R.id.imageView1);
imageView2 = (ImageView)findViewById(R.id.imageView2);
imageView3 = (ImageView)findViewById(R.id.imageView3);
imageView4 = (ImageView)findViewById(R.id.imageView4);
}
ImageView imageView1, imageView2, imageView3, imageView4;
}
Layout l;
int Status = 0;
public ViewGrid(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.view_grid, this);
l = new Layout(); setupSkin(); setupGame();onClick();
}
void cardSkin(int skin) {
l.imageView1.setImageResource(skin);
l.imageView2.setImageResource(skin);
l.imageView3.setImageResource(skin);
l.imageView4.setImageResource(skin);
}
void setupSkin() {
switch (MainActivity.skin) {
case Skin.android:
cardSkin(Skin.android);
break;
case Skin.question:
cardSkin(Skin.question);
break;
case Skin.disney:
cardSkin(Skin.disney);
break;
}
}
void setupGame() {
switch (MainActivity.game) {
case Game.numbers:
break;
case Game.animals:
break;
case Game.disney:
loadGameDisney();
break;
}
}
void loadGameDisney() {
Card[] disney = new Card[] {
new Card(R.drawable.disney_mickey),
new Card(R.drawable.disney_dingo),
new Card(R.drawable.disney_donald),
new Card(R.drawable.disney_minnie),
new Card(R.drawable.disney_plutot),
new Card(R.drawable.disney_tigroux),
new Card(R.drawable.disney_pinocchio),
new Card(R.drawable.disney_mufasa)
};
for (int i = 0; i < disney.length; i++) {
l.imageView1.setBackgroundResource(disney[0].Image);
l.imageView2.setBackgroundResource(disney[4].Image);
l.imageView3.setBackgroundResource(disney[2].Image);
l.imageView4.setBackgroundResource(disney[3].Image);
}
}
void onClick() {
l.imageView1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (Status == 0) {
l.imageView1.setImageResource(INVISIBLE);
loadGameDisney();
Status = 1;
}else{
resetBackground(l.imageView1);
Status = 0;
}
}
});
}
void resetBackground(ImageView object) {
object.setImageResource(MainActivity.skin);
}
}
基本上现在,我将我的图像视图手动放入我的自定义视图中,但我想创建另一个仅包含我可以添加到我的第一个自定义视图的图像视图的自定义视图。就像我在这段代码中一样。
void addRow() {
LinearLayout table = (LinearLayout)findViewById(R.id.LayoutMain);
ViewGrid row = new ViewGrid(this, null);
table.addView(row);
}
第二个自定义视图将被称为ViewCard。 谢谢你的帮助