【问题标题】:Is it possible to make bitmap in TextView and showing in TableLayout?是否可以在 TextView 中制作位图并在 TableLayout 中显示?
【发布时间】:2013-05-16 21:12:56
【问题描述】:

我已经为在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);
    }   
}

我被强制关闭了,抱歉英语不好


logcat 这个??

05-17 16:45:47.239: E/Trace(5339): error opening trace file: No such file or directory (2)
05-17 16:45:47.649: D/dalvikvm(5339): GC_FOR_ALLOC freed 3137K, 58% free 3606K/8387K, paused 31ms, total 31ms
05-17 16:45:54.479: D/dalvikvm(5339): GC_FOR_ALLOC freed 607K, 46% free 4554K/8387K, paused 18ms, total 27ms
05-17 16:45:54.489: D/AndroidRuntime(5339): Shutting down VM
05-17 16:45:54.489: W/dalvikvm(5339): threadid=1: thread exiting with uncaught exception (group=0x40b22300)
05-17 16:45:54.509: E/AndroidRuntime(5339): FATAL EXCEPTION: main
05-17 16:45:54.509: E/AndroidRuntime(5339): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.view.ViewGroup.addViewInner(ViewGroup.java:3378)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.view.ViewGroup.addView(ViewGroup.java:3249)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.view.ViewGroup.addView(ViewGroup.java:3194)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.view.ViewGroup.addView(ViewGroup.java:3170)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at skripsi.slidame4.Slidame4.bukagambar(Slidame4.java:126)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at skripsi.slidame4.Slidame4.onOptionsItemSelected(Slidame4.java:89)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.app.Activity.onMenuItemSelected(Activity.java:2534)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:977)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.view.menu.SubMenuBuilder.dispatchMenuItemSelected(SubMenuBuilder.java:81)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:940)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.widget.AdapterView.performItemClick(AdapterView.java:298)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.widget.AbsListView.performItemClick(AbsListView.java:1088)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2861)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.widget.AbsListView$1.run(AbsListView.java:3535)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.os.Handler.handleCallback(Handler.java:615)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.os.Looper.loop(Looper.java:137)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at android.app.ActivityThread.main(ActivityThread.java:4931)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at java.lang.reflect.Method.invokeNative(Native Method)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at java.lang.reflect.Method.invoke(Method.java:511)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
05-17 16:45:54.509: E/AndroidRuntime(5339):     at dalvik.system.NativeStart.main(Native Method)
05-17 16:45:56.509: I/Process(5339): Sending signal. PID: 5339 SIG: 9

Slidame4.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);    
    }


}

我添加了removeallview,但仍然强制关闭,

【问题讨论】:

  • 发布您的日志猫。再想一想:你的位图有多大?你的网格有多大?看起来你会有很多内存管理问题
  • 我将 'lebar' 设置为我的屏幕从 'getdefaultdisplay' 获得的宽度,我得到了 320 的值。logcat?如何获得?对不起,我是 android 的新手
  • 是的。就是那个。现在我们需要查看 Slidame4.java(错误在第 126 行)
  • 第 126 行 tblrow.addView(bimg);
  • 错误告诉你视图(bimg)已经属于另一个视图。 >>您必须首先在孩子的父母上调用 removeView()。

标签: android bitmap android-tablelayout


【解决方案1】:

删除这一行

bimg = new ImageView(this);

并将其添加到

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

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

【讨论】:

  • 不能放那个语法,我试试this.tbl.removeView(tblrow)this.tblrow.removeView(bimg);;仍然强制关闭
  • vg.removeview(bimg) 05-18 00:48:01.519: E/AndroidRuntime(11483): FATAL EXCEPTION: main 05-18 00:48:01.519: E/AndroidRuntime(11483): java.lang.NullPointerException 05-18 00:48:01.519: E/AndroidRuntime(11483): at skripsi.slidame4.Slidame4.bukagambar(Slidame4.java:116) 中的错误是在 textview 中显示图像的另一种方式?
  • 仍然 forceclose bimg = new ImageView(tblrow); 不能那样放 tblrow
  • 真的吗?更改后可以发布 logcat 吗?
  • logcat E/AndroidRuntime(11483): FATAL EXCEPTION: main 我得到了另一种方法来用一些人的源代码显示该图像,它成功了哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 2012-01-23
  • 2018-02-06
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多