Salve ragazzi sto sviluppando una calcolatrice, ho un problema per quanto riguarda la modalità in landscape,in sostanza quando ho il terminale in questa modalità tutta la grafica che ho creato tramite l'xml viene formattata malissimo,(non si vedono più i pulsanti), vi linko sia l'xml che il codice
grazie mille
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="wrap_content" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity$PlaceholderFragment">
<TextView
android:id="@+id/display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/material_deep_teal_200"/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/display"
android:layout_alignParentEnd="true"
android:layout_marginTop="266dp">
<Button
android:id="@+id/piu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
/>
<Button
android:id="@+id/meno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:layout_alignParentTop="true"
android:layout_toEndOf="@id/piu" />
<Button
android:id="@+id/per"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/meno" />
<Button
android:id="@+id/diviso"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toEndOf="@id/per"
android:text="/"/>
<Button
android:id="@+id/uno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/piu"
android:text="1"/>
<Button
android:id="@+id/due"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/piu"
android:layout_toEndOf="@+id/uno"
android:text="2"/>
<Button
android:id="@+id/tre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/piu"
android:layout_toEndOf="@+id/due"
android:text="3"/>
<Button
android:id="@+id/radice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/piu"
android:layout_toEndOf="@+id/tre"
android:text="radix"/>
<Button
android:id="@+id/quattro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/uno"
android:text="4"/>
<Button
android:id="@+id/cinque"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/due"
android:layout_toEndOf="@+id/quattro"
android:text="5"/>
<Button
android:id="@+id/sei"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tre"
android:layout_toEndOf="@+id/cinque"
android:text="6"/>
<Button
android:id="@+id/modulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="mod"
android:layout_above="@+id/nove"
android:layout_toEndOf="@+id/sei" />
<Button
android:id="@+id/sette"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/quattro"
android:text="7"/>
<Button
android:id="@+id/otto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8"
android:layout_below="@+id/cinque"
android:layout_alignStart="@+id/cinque" />
<Button
android:id="@+id/nove"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9"
android:layout_below="@id/sei"
android:layout_toEndOf="@id/otto" />
<Button
android:id="@+id/zero"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:layout_below="@+id/modulo"
android:layout_toEndOf="@id/nove"
/>
<Button
android:id="@+id/uguale"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/sette"
android:text="="
android:layout_alignParentBottom="true"
android:layout_toStartOf="@+id/zero" />
<Button
android:id="@+id/cancella"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/zero"
android:layout_toEndOf="@id/uguale"
android:layout_alignParentBottom="true"
android:text="c"/>
</RelativeLayout>
</RelativeLayout>
codice:
package com.example.broke.calcolatrice30;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView display = (TextView) findViewById(R.id.display);
final double[] primo = new double[1];
final double[] secondo = new double[1];
final String[] simbolo = {new String()};
Button zero = (Button) findViewById(R.id.zero);
Button uno = (Button) findViewById(R.id.uno);
Button due = (Button) findViewById(R.id.due);
Button tre = (Button) findViewById(R.id.tre);
Button quattro = (Button) findViewById(R.id.quattro);
Button cinque = (Button) findViewById(R.id.cinque);
Button sei = (Button) findViewById(R.id.sei);
Button sette = (Button) findViewById(R.id.sette);
Button otto = (Button) findViewById(R.id.otto);
Button nove = (Button) findViewById(R.id.nove);
final View.OnClickListener scriviNumero = new View.OnClickListener() {
@Override
public void onClick(View v) {
String numero = ((Button) v).getText().toString();
display.setText(display.getText() + numero);
display.refreshDrawableState();
}
};
zero.setOnClickListener(scriviNumero);
uno.setOnClickListener(scriviNumero);
due.setOnClickListener(scriviNumero);
tre.setOnClickListener(scriviNumero);
quattro.setOnClickListener(scriviNumero);
cinque.setOnClickListener(scriviNumero);
sei.setOnClickListener(scriviNumero);
sette.setOnClickListener(scriviNumero);
otto.setOnClickListener(scriviNumero);
nove.setOnClickListener(scriviNumero);
final View.OnClickListener cancellaTutto = new View.OnClickListener() {
@Override
public void onClick(View v) {
display.setText("");
primo[0] = 0;
secondo[0] = 0;
}
};
Button cancella = (Button) findViewById(R.id.cancella);
cancella.setOnClickListener(cancellaTutto);
final View.OnClickListener prendiSimbolo = new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
simbolo[0] = ((Button) v).getText().toString();
if(simbolo[0].equals("-"))
display.setText("-");
else {
primo[0] = Double.parseDouble(display.getText().toString());
display.setText("");
display.refreshDrawableState();
}
}catch (Exception e){
Toast.makeText(getApplicationContext(),"operazione non valida",Toast.LENGTH_SHORT).show();
}
}
};
Button per = (Button) findViewById(R.id.per);
Button diviso = (Button) findViewById(R.id.diviso);
Button meno = (Button) findViewById(R.id.meno);
Button piu = (Button) findViewById(R.id.piu);
Button modulo = (Button) findViewById(R.id.modulo);
per.setOnClickListener(prendiSimbolo);
diviso.setOnClickListener(prendiSimbolo);
meno.setOnClickListener(prendiSimbolo);
piu.setOnClickListener(prendiSimbolo);
modulo.setOnClickListener(prendiSimbolo);
final View.OnClickListener radiceListener= new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
String ris = display.getText().toString();
double r = Double.parseDouble(ris);
display.setText("" + Math.sqrt(r));
display.refreshDrawableState();
}catch (Exception e){
Toast.makeText(getApplicationContext(),"operazione non valida. Seleziona prima il numero",Toast.LENGTH_SHORT).show();
}
}
};
Button radice =(Button)findViewById(R.id.radice);
radice.setOnClickListener(radiceListener);
final View.OnClickListener ugualeListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
secondo[0] =Double.parseDouble(display.getText().toString());
if(simbolo[0].equalsIgnoreCase("+"))
display.setText(""+(primo[0] + secondo[0]));
if(simbolo[0].equalsIgnoreCase("-"))
display.setText(""+(primo[0] - secondo[0]));
if(simbolo[0].equalsIgnoreCase("*"))
display.setText(""+(primo[0] * secondo[0]));
if(simbolo[0].equalsIgnoreCase("/"))
display.setText(""+(primo[0] / secondo[0]));
if(simbolo[0].equalsIgnoreCase("-"))
display.setText(""+(primo[0] - secondo[0]));
if(simbolo[0].equalsIgnoreCase("mod"))
display.setText(""+(primo[0] % secondo[0]));
}
};
Button uguale= (Button)findViewById(R.id.uguale);
uguale.setOnClickListener(ugualeListener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
p.s. se qualcuno mi può anche spiegare il fix che mi ha proposto l'ide di cambiare le variabili primo,secondo e simbolo in vettori(non ho seguito il fix e il codice crashava,inserendo il fix funziona, ma non credo che sia una soluzione corretta...)
grazie mille