Android 是否可以在TextView中制作位图并在TableLayout中显示?

Android 是否可以在TextView中制作位图并在TableLayout中显示?,android,bitmap,android-tablelayout,Android,Bitmap,Android Tablelayout,我在TextView中缩放了位图以显示,但是如何在TableLayout中添加行和列 tbl = (TableLayout)findViewById(R.id.TableLayout1); tblrow = new TableRow(this); public void bukagambar(){ bit = Bitmap.createScaledBitmap(bi, lebar, lebar, true); int lebar_tile = bit.getWidth

我在
TextView
中缩放了位图以显示,但是如何在
TableLayout
中添加行和列

    tbl = (TableLayout)findViewById(R.id.TableLayout1);
tblrow = new TableRow(this);


public void bukagambar(){
    bit = Bitmap.createScaledBitmap(bi, lebar, lebar, true);
    int lebar_tile = bit.getWidth()/ukurangrid;
    for(short baris=0 ;baris<ukurangrid;baris++){
        for(short kolom=0 ;kolom<ukurangrid;kolom++){
            bitm= Bitmap.createBitmap(bit, kolom*lebar_tile, baris*lebar_tile, lebar_tile, lebar_tile);
            bimg.setImageBitmap(bitm);
            tblrow.addView(bimg);
        }
        tbl.addView(tblrow);
    }   
}
slidemae4.java代码

public class Slidame4 extends Activity {

private Bitmap bit,bi,bitm;
private TableRow tblrow ;
private ImageView bimg;
private kotak hitam;
private TextView v ;
private TableLayout tbl;
public int ukurangrid;
private GameBoard coba;
private int lebar;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Resources r = getResources();
    bi = BitmapFactory.decodeResource(r, R.drawable.gambar2);
    tbl = (TableLayout)findViewById(R.id.TableLayout1);
    tblrow = new TableRow(this);
    v= new TextView(this);
    bimg = new ImageView(this);
    coba = new GameBoard();
    Display display = getWindowManager().getDefaultDisplay();
    lebar = (display.getWidth());       
    setContentView(R.layout.activity_slidame4);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.slidame4, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
    case R.id.hint:
        Toast.makeText(getApplicationContext(), ""+lebar, Toast.LENGTH_SHORT).show();
        break;
    case R.id.highscore:
        Toast.makeText(getApplicationContext(), "HIGH SCORE ", 3).show();
        break;
    case R.id.grid3:
        ukurangrid = 3;
        bukagambar();
        item.setChecked(true);
        break;
    case R.id.grid4:
        ukurangrid = 4;
        bukagambar();
        item.setChecked(true);
        break;
    case R.id.grid5:
        ukurangrid = 5;
        bukagambar();
        item.setChecked(true);
        break;

    default:
        return super.onOptionsItemSelected(item);

    }
        return false;

}

public void bukagambar(){
    tblrow.removeAllViews();
    bit = Bitmap.createScaledBitmap(bi, lebar, lebar, true);
    int lebar_tile = bit.getWidth()/ukurangrid;
    for(short baris=0 ;baris<ukurangrid;baris++){
        for(short kolom=0 ;kolom<ukurangrid;kolom++){
            bitm= Bitmap.createBitmap(bit, kolom*lebar_tile, baris*lebar_tile, lebar_tile, lebar_tile);
            bimg.setImageBitmap(bitm);
            tblrow.addView(bimg);
        }
    tbl.addView(tblrow);    
    }


}
public类slideame4扩展活动{
私有位图位,bi,bitm;
私人桌椅;
私有ImageView bimg;
私人科塔克希坦;
私有文本视图v;
私人桌面布局tbl;
公共国际电网;
私人游戏板coba;
列巴私人酒店;
私人语境;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Resources r=getResources();
bi=BitmapFactory.decodeResource(r,r.drawable.gambar2);
tbl=(TableLayout)findViewById(R.id.TableLayout1);
tblrow=新表格行(本);
v=新文本视图(此);
bimg=新图像视图(本);
coba=新游戏板();
Display Display=getWindowManager().getDefaultDisplay();
lebar=(display.getWidth());
setContentView(R.layout.activity_slideame4);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.slideame4,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.hint:
Toast.makeText(getApplicationContext(),“”+lebar,Toast.LENGTH_SHORT).show();
打破
案例R.id.高分:
Toast.makeText(getApplicationContext(),“HIGH SCORE”,3.show();
打破
案例R.id.3:
UkuraGrid=3;
布卡甘巴();
item.setChecked(真);
打破
案例R.id.4:
UkuraGrid=4;
布卡甘巴();
item.setChecked(真);
打破
案例R.id.5:
UkuraGrid=5;
布卡甘巴();
item.setChecked(真);
打破
违约:
返回super.onOptionsItemSelected(项目);
}
返回false;
}
布卡甘巴公共空间(){
tblrow.removeAllViews();
bit=Bitmap.createScaledBitmap(bi、lebar、lebar、true);
int lebar_tile=bit.getWidth()/ukurangrid;
对于(短baris=0;baris删除此行

bimg = new ImageView(this);
并将其添加到

int lebar_tile = bit.getWidth()/ukurangrid;
bimg = new ImageView(tblrow);

(你的
ImageView
将被创建为表行的子行。

发布你的logcat。再想一想:你的位图有多大?你的网格有多大?看起来你会有很多内存管理问题。我将“lebar”设置为“lebar”,我的屏幕宽度从“getdefaultdisplay”得到,我得到了值320。logcat?如何得到它?所以我是AndroidEP中的新手。就是这个。现在我们需要看到slideame4.java(错误在第126行)第126行
tblrow.addView(bimg);
错误告诉您视图(bimg)已经属于另一个视图。>>您必须首先对孩子的父视图调用removeView()。无法放入该语法,我尝试
this.tbl.removeView(tblrow)
this.tblrow.removeView(bimg);
vg.removeView(bimg)
05-18 00:48:01.519:E/AndroidRuntime(11483):致命异常:main 05-18 00:48:01.519:E/AndroidRuntime(11483):java.lang.NullPointerException 05-18 00:48:01.519:E/AndroidRuntime(11483):在skripsi.slideame4.bukagambar(slideame4.java:116)
这是在文本视图中显示图像的另一种方式吗?仍然是forceclose
bimg=new ImageView(tblrow);
真的不能用那种方式放置tblrow吗?现在你可以发布日志了吗?logcat
E/AndroidRuntime(11483):致命异常:main
,我用另一种方法用一些人的源代码来显示该图像,它成功了,哈哈
int lebar_tile = bit.getWidth()/ukurangrid;
bimg = new ImageView(tblrow);