0

私は今夜​​インターネットでたくさんの検索をしました、そしてこれは私が思いついたものです。何らかの理由で動作していません。エラーは発生せず、ループが実際に実行されていることを確認できます。これが私のコードです。

TableLayout table = (TableLayout) findViewById(R.id.tablelayout1);
    while (numsounds>0){
        Log.d("MYTAG", ""+numsounds);

        if(numsounds>=3){
            Log.d("MYTAG", ""+numsounds);
            TableRow row = new TableRow(this);
            for (int j = 0; j < 3; j++) {


            int button_num = j + 1 + ( row_num * 3);
            row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
            buttonparams.height = LayoutParams.MATCH_PARENT;
            int btnwidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
            buttonparams.width = btnwidth;
            buttonparams.weight = .31f;
            Button btn = new Button(this);
            btn.setLongClickable(true);
            btn.setLayoutParams(buttonparams);
            btn.setText(soundtitleArray[button_num]);
            btn.setId(j + 1 + ( button_num));
            btn.getBackground().setAlpha(150);
            btn.setOnClickListener(buttonClickListener);
            btn.setOnLongClickListener(buttonLongClickListener);
            row.addView(btn);

            }
            numsounds=numsounds-3;
            Log.d("MYTAG", ""+numsounds);
            table.addView(row);
            row_num = row_num+1;
        }
        if(numsounds<3){
            Log.d("MYTAG", ""+numsounds);
            TableRow row = new TableRow(this);
            for (int j = 0; j < numsounds; j++) {


                int button_num = j + 1 + ( row_num * numsounds);
                row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
                buttonparams.height = LayoutParams.MATCH_PARENT;
                int btnwidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, getResources().getDisplayMetrics());
                buttonparams.width = btnwidth;
                float btnweight = 1/numsounds;
                buttonparams.weight = btnweight;
                Button btn = new Button(this);
                btn.setLongClickable(true);
                btn.setLayoutParams(buttonparams);
                btn.setText(soundtitleArray[button_num]);
                btn.setId(j + 1 + ( button_num));
                btn.getBackground().setAlpha(150);
                btn.setOnClickListener(buttonClickListener);
                btn.setOnLongClickListener(buttonLongClickListener);
                row.addView(btn);

                }
                table.addView(row);
                row_num = row_num+1;
                numsounds=numsounds-1;
                Log.d("MYTAG", ""+numsounds);
        }
    }

数値の変化をlogcatに出力しているので、コードが実行されていることはわかっています。私が理解できるのは、背景だけが表示された空白の画面が表示され続けることです。ボタンが表示されていません。

また、私の輸入品は次のとおりです。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import com.<MYAPP>.SoundBoard;
import com.<MYAPP>.R;
import android.content.ContentValues;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.provider.MediaStore.Audio.AudioColumns;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.Toast;
import com.google.ads.AdRequest;
import com.google.ads.AdSize;
import com.google.ads.AdView;
import android.widget.TableRow.LayoutParams;

クラスの始めにbuttonparamsを次のように宣言しました。

private TableLayout.LayoutParams buttonparams = new TableLayout.LayoutParams();
4

3 に答える 3

1

TableRowに使用したレイアウトパラメータはTableRow.LayoutParamsである必要があります。試してください。

TableRow.LayoutParams buttonparams = new TableRow.LayoutParams(); 
于 2013-03-08T10:30:08.760 に答える
0

この例を参照として使用できます。

LinearLayout imageslayout = (LinearLayout)findViewById(R.id.imageslayout);

for (int i = 0; i < 10; i++) {
                Button im = new Button(getApplicationContext());

                TableRow.LayoutParams blp = new TableRow.LayoutParams();
                blp.rightMargin = 20;
                blp.width=170;
                blp.height=140;  
                im.setLayoutParams(blp); 


                imageslayout.addView(im); 
                im.setOnClickListener(this);

            }
于 2013-03-08T09:49:02.317 に答える
0

buttonParams.height = heightなどで設定するのではなく、buttonParams = new LayoutParams(height、width)のようなコンストラクターでボタンパラメーターを設定します。違いは、割り当てがinvalidateを呼び出さないため、dimenがゼロになることです。

于 2013-03-08T09:52:15.157 に答える