リニアレイアウトで設定ボタンを使用し、ボタン構成をプログラムで設定します。複数の解像度に対してプログラム的にボタンレイアウトをより適切に設定するには
buttonEdit = new ArrayList<ButtonData>();
buttonEdit.add(new ButtonData(1, "one", R.drawable.1));
buttonEdit.add(new ButtonData(2, "two", R.drawable.2));
buttonEdit.add(new ButtonData(3, "three", R.drawable.3));
buttonEdit.add(new ButtonData(4, "four", R.drawable.4));
buttonEdit.add(new ButtonData(5, "five", R.drawable.5));
LayoutParams lp=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
for (ButtonData button : buttonEdit) {
Button btn = new Button(getApplicationContext());
btn.setId(button.getButtonID());
btn.setBackgroundResource(button.getBackgroundResource());
btn.setOnClickListener(buttonOnclickListener);
btn.setHeight(56);
btn.setWidth(48);
LinearLayout ll = new LinearLayout(getApplicationContext());
ll.setLayoutParams(lp);
ll.setOrientation(LinearLayout.VERTICAL);
ll.setPadding(10, 0, 10, 0);
btn.setGravity(Gravity.CENTER_HORIZONTAL);
TextView textLabel = new TextView(getApplicationContext());
textLabel.setText(button.getButtonName());
ll.addView(btn);
ll.addView(textLabel);
linearLayoutData.put(String.valueOf(button.getButtonID()), ll);
buttonObject.put(String.valueOf(button.getButtonID()), btn);
}
コードリストでは、左右に10のパディングを設定しました。ユーザーはボタン間に別のスペースを表示できます。問題は、複数の解像度(QVGA、HVGA、WVGA)でアプリをインストールすると、アプリの間隔が違うことです。 QVGAでは幅が広く、WVGAでは狭いです。何をしたらいいでしょう?
@BorisStrandjev、xmlで定義された使用レイアウトの提案に感謝します。私のアプリはちょうど非常に動的なので、xmlを使用しないでください。 問題は複数の解像度で異なるパディング尺度です。どうすればdp/dip測定値をプログラムで記述することができますか? –
dpsをプログラムで得る方法を編集で追加しました。 –
多くの感謝.. :) –