最初の Android プロジェクト (Helloworld の代わりに) として単純な電卓を作成したいのですが、calculaotr UI を以下に示します。これを使用GridLayout
して、結果表示TextView
とコントロールButton
sを配置し、 GridLayout
6 行と 4 列を取ります。(ここではxmlレイアウトファイルを簡略化しました)
<GridLayout android:rowCount="6"
android:columnCount="4"
android:orientation="horizontal">
<TextView android:id="@+id/expressionTextView"
android:layout_columnSpan="4"/>
<LinearLayout
android:layout_columnSpan="4">
<Button android:id="@+id/btnClearText"/>
<Button android:id="@+id/btnDeleteText"/>
</LinearLayout>
<GridLayout>
ボタンを作成する+/-/x//0-9.
には、次のコードを使用します。
String[] buttonTexts = new String[]
{
"7", "8", "9", "/",
"4", "5", "6", "x",
"1", "2", "3", "-",
".", "0", "=", "+"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size);
int screenWidth = size.x;
int screenHeight = size.y;
int oneQuarterWidth = (int) (screenWidth * 0.25);
for (int ii = 0; ii < buttonTexts.length; ii++) {
Button btn = new Button(this);
btn.setText(buttonTexts[ii]);
btn.setTextSize(40);
GridLayout.Spec rowSpec = GridLayout.spec(ii/4 + 2);
GridLayout.Spec columnSpec = GridLayout.spec(ii % 4 );
GridLayout.LayoutParams params = new GridLayout.LayoutParams(rowSpec, columnSpec);
params.setGravity(Gravity.FILL);
params.width = oneQuarterWidth;
gridLayout.addView(btn, params);
}
ただし、最後の行は垂直方向に伸びており、Android マシンで電卓を実行すると、最後の行の一部が非表示になる場合があります。
私が欲しいのは、UI をデバイスの高さに合わせることです。アイデアはありますか? ありがとう!
PS結果表示の高さを設定しようとしましたがTextView
、それには以下を使用LinearLayout
して含まClear/Del
れています:
expressionTextView = (TextView)findViewById(R.id.expressionTextView);
clearDelLinearLayout = (LinearLayout)findViewById(R.id.linearLayout1);
GridLayout.LayoutParams expressionTextViewParams =
(GridLayout.LayoutParams)expressionTextView.getLayoutParams();
expressionTextViewParams.height = ...; // some calculated height
expressionTextView.setLayoutParams(expressionTextViewParams);
しかし、これはうまくいきません:(