Я хочу создать простой калькулятор в качестве моего первого проекта андроида (вместо Helloworld), здесь показан интерфейс пользователя calculaotr, который я использую GridLayout
, чтобы упорядочить отображение результатов TextView
и контроль Button
s, GridLayout
занимает 6 строк и 4 столбца. (Я упростил файл макета XML здесь)Как сделать свой пользовательский интерфейс UI для Android Android
<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);
}
Однако последний ряд растягивает по вертикали , и при запуске калькулятора на моей машине андроида, некоторые из последних строк могут быть скрыты!
Я хочу, чтобы пользовательский интерфейс соответствовал высоте устройства, есть ли у вас какие-либо идеи? Благодаря!
P.S. Я даже попытался установить высоту отображения результата 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);
Но это не работает :(
Вы имеете в виду горизонтальное направление? –
Спасибо за ваш комментарий, я использовал горизонтальное направление. –