Autore Topic: LinearLayout  (Letto 425 volte)

Offline lucabasket08

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4 mini
  • Sistema operativo:
    Windows 10
LinearLayout
« il: 07 Giugno 2016, 17:35:17 CEST »
0
Come posso fare in un LinearLayout a far partire gli oggetti da sotto e non da sopra?

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:LinearLayout
« Risposta #1 il: 07 Giugno 2016, 17:43:57 CEST »
0
Usa android:gravity="bottom".

Ciao,
Marco
Se sbaglio, correggetemi.

Offline lucabasket08

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4 mini
  • Sistema operativo:
    Windows 10
Re:LinearLayout
« Risposta #2 il: 07 Giugno 2016, 17:52:15 CEST »
0
no ho già provato non funziona

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:LinearLayout
« Risposta #3 il: 07 Giugno 2016, 20:47:11 CEST »
0
Magari ho capito male, ti serve una cosa simile? (vedi allegato)
Se sbaglio, correggetemi.

Offline lucabasket08

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4 mini
  • Sistema operativo:
    Windows 10
Re:LinearLayout
« Risposta #4 il: 08 Giugno 2016, 14:04:13 CEST »
0
Si è esattamente quello che mi serve .-.
Non capisco perchè a me non funziona

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:LinearLayout
« Risposta #5 il: 08 Giugno 2016, 14:07:45 CEST »
0
Puoi postare l'XML?
A me viene da pensare che il parametro layout_height che hai impostato nel LinearLayout sia  "wrap_content" e quindi non si estende per tutto lo schermo.
Se sbaglio, correggetemi.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:LinearLayout
« Risposta #6 il: 08 Giugno 2016, 14:30:46 CEST »
0
Perche avrai una scrolview

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:LinearLayout
« Risposta #7 il: 08 Giugno 2016, 14:39:19 CEST »
0
Perche avrai una scrolview
Vero, se è all'interno di una ScrollView il match_parent del LinearLayout viene ignorato.
Comunque ho fatto una prova anche con la ScrollView e pare funzionare, vedi allegato.
Se sbaglio, correggetemi.

Offline lucabasket08

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4 mini
  • Sistema operativo:
    Windows 10
Re:LinearLayout
« Risposta #8 il: 08 Giugno 2016, 14:58:20 CEST »
0
forse sta il problema sta nel fatto che io non cerco di inserire una semplice textwiew ma un framelayout con all'interno la textView tramite un bottone.
 Ora non so perchè ma ora quando premo il bottone crasha anche l'applicazione quando ieri funzionava.

Comunque sia io ho questo linear layout (è anche all'interno di un altro linear layout)

[size=9,0pt]<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/abc_config_prefDialogWidth"
android:layout_weight="1"
android:orientation="vertical"
android:id="@+id/scrollIndicatorDown"
android:layout_gravity="bottom">
</LinearLayout>[/size][/font]

e tramite un bottone cerco di inserire il tutto con questo codice

[/size][size=9,0pt]public void premi(View v) {
    EditText a = (EditText) findViewById(R.id.
text1);
EditText b = (EditText) findViewById(R.id.text2);
EditText c = (EditText) findViewById(R.id.text3);
EditText d = (EditText) findViewById(R.id.text4);
TextView textView = new TextView(this);
textView.setTextSize(20);
textView.setText(a.getText() + "     " + b.getText() + "     " + c.getText() + "     " + d.getText());
FrameLayout frameLayout = new FrameLayout(this);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.scrollIndicatorDown);
frameLayout.addView(textView);
linearLayout.addView(frameLayout);
}[/size]
« Ultima modifica: 08 Giugno 2016, 14:59:53 CEST da lucabasket08 »

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:LinearLayout
« Risposta #9 il: 08 Giugno 2016, 15:10:11 CEST »
0
L'allineamento penso non ti funzioni perché hai messo "bottom" su "layout_gravity" mentre servirebbe nel parametro "gravity".
Per il crash sarebbe utile leggere il contenuto del logcat con l'errore.
Se sbaglio, correggetemi.

Offline lucabasket08

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4 mini
  • Sistema operativo:
    Windows 10
Re:LinearLayout
« Risposta #10 il: 08 Giugno 2016, 15:16:15 CEST »
0
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
                                                                                at android.widget.LinearLayout.measureVertical(LinearLayout.java:669)
                                                                                at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
                                                                                at android.view.View.measure(View.java:17482)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                                                                                at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                                at android.view.View.measure(View.java:17482)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
                                                                                at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391)
                                                                                at android.view.View.measure(View.java:17482)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                                                                                at android.view.View.measure(View.java:17482)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
                                                                                at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
                                                                                at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
                                                                                at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
                                                                                at android.view.View.measure(View.java:17482)
                                                                                at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5376)
                                                                                at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
                                                                                at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2548)
                                                                                at android.view.View.measure(View.java:17482)
                                                                                at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2287)
                                                                                at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1398)
                                                                                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1597)
                                                                                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1256)
                                                                                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6635)
                                                                                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:813)
                                                                                at android.view.Choreographer.doCallbacks(Choreographer.java:613)
                                                                                at android.view.Choreographer.doFrame(Choreographer.java:583)
                                                                                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:799)
                                                                                at android.os.Handler.handleCallback(Handler.java:733)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                at android.os.Looper.loop(Looper.java:146)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:5593)
                                                                                at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                                                                at dalvik.system.NativeStart.main(Native Method)
questo è l'errore

Post unito: 08 Giugno 2016, 15:18:47 CEST
Ah ho anche leggermente cambiato il codice in questo

[size=9,0pt]public void premi(View v) {
    EditText a = (EditText) findViewById(R.id.
text1);
EditText b = (EditText) findViewById(R.id.text2);
EditText c = (EditText) findViewById(R.id.text3);
EditText d = (EditText) findViewById(R.id.text4);
TextView textView = new TextView(this);
textView.setTextSize(20);
textView.setText(a.getText() + "     " + b.getText() + "     " + c.getText() + "     " + d.getText());
FrameLayout frameLayout = new FrameLayout(this);
FrameLayout.LayoutParams layoutParamsSmall = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
frameLayout.setLayoutParams(layoutParamsSmall);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.scrollIndicatorDown);
frameLayout.addView(textView);
linearLayout.addView(frameLayout);
}[/size][/font]
« Ultima modifica: 08 Giugno 2016, 15:18:47 CEST da lucabasket08, Reason: Merged DoublePost »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 580
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:LinearLayout
« Risposta #11 il: 08 Giugno 2016, 15:34:34 CEST »
+2
Lasciatemi dire che solitamente non è una buona idea istanziare le viste da codice.

Le best-practices suggeriscono di creare un layout che rappresenta la View da aggiungere, e fare l'inflate di questo layout.

Nel tuo caso dovresti creare un layout (item_text.xml) che rappresenta una TextView contenuta in un FrameLayout, quindi la aggiungi al tuo linearLayout così:

Codice (Java): [Seleziona]
ViewGroup newItem = LayoutInflater.from(this).inflate(R.layout.item_text, linearLayout, false);
TextView textView = newItem.findViewById(R.id.textViewDentroFrame);
//...
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.scrollIndicatorDown);
linearLayout.addView(newItem);

In questo modo disaccoppi l'aspetto (definito nel file xml) dal comportamento (definito nel codice).

Post unito: 08 Giugno 2016, 15:47:24 CEST
Per maggior completezza:

- Crea un file di layout chiamato "item_text.xml" così definito:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
                android:id="@+id/text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                />

</FrameLayout>

- modifica il tuo codice in:

Codice (Java): [Seleziona]
public void premi(View v) {
  EditText a = (EditText) findViewById(R.id.text1);
  EditText b = (EditText) findViewById(R.id.text2);
  EditText c = (EditText) findViewById(R.id.text3);
  EditText d = (EditText) findViewById(R.id.text4);
 
  LinearLayout linearLayout = (LinearLayout) findViewById(R.id.scrollIndicatorDown);

  //Eseguo l'inflate dell'elemento da aggiungere
  ViewGroup newItem = LayoutInflater.from(this).inflate(R.layout.item_text, linearLayout, false);

  //Modifico il testo della TextView
  TextView textView = newItem.findViewById(R.id.text);
  textView.setText(a.getText() + "     " + b.getText() + "     " + c.getText() + "     " + d.getText());

  //Aggiungo l'elemento al LinearLayout
  linearLayout.addView(frameLayout);
}

Se hai problemi di visualizzazione non hai bisogno di modificare il codice java, basta intervenire sugli XML.

« Ultima modifica: 08 Giugno 2016, 15:47:24 CEST da Ohmnibus, Reason: Merged DoublePost »
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline lucabasket08

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S4 mini
  • Sistema operativo:
    Windows 10
Re:LinearLayout
« Risposta #12 il: 08 Giugno 2016, 16:28:25 CEST »
0
Avevo già pensato che si potesse fare una cosa del genere ma non avevo idea di come farla. Ora provo in questo modo, Grazie

Post unito: [time]08 Giugno 2016, 20:33:35 CEST[/time]
Codice (Java): [Seleziona]
public void addPanel(View v){
    EditText editText[] = new EditText[4];
    editText[0] = (EditText) findViewById(R.id.Input_Text_1);
    editText[1] = (EditText) findViewById(R.id.Input_Text_2);
    editText[2] = (EditText) findViewById(R.id.Input_Text_3);
    editText[3] = (EditText) findViewById(R.id.Input_Text_4);

    LinearLayout layoutSuperiore = (LinearLayout) findViewById(R.id.Layout_Superiore);

    TextView textView = (TextView) findViewById(R.id.Text_Panel);
    textView.setText(editText[0].getText() + "  " + editText[1].getText() + "  " + editText[2].getText() + "  " + editText[3].getText());

    ViewGroup panel = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.panel_layout, layoutSuperiore, false);

    layoutSuperiore.addView(panel);
}

Sapete dirmi perchè mi da errore sulla riga del setText

L'errore è il seguente:

java.lang.IllegalStateException: Could not execute method for android:onClick
                                                                                   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                                                                                   at android.view.View.performClick(View.java:4640)
                                                                                   at android.view.View$PerformClick.run(View.java:19425)
                                                                                   at android.os.Handler.handleCallback(Handler.java:733)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:146)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5593)
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                                                                   at dalvik.system.NativeStart.main(Native Method)
                                                                                Caused by: java.lang.reflect.InvocationTargetException
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                                   at android.view.View.performClick(View.java:4640)
                                                                                   at android.view.View$PerformClick.run(View.java:19425)
                                                                                   at android.os.Handler.handleCallback(Handler.java:733)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:146)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5593)
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                                                                   at dalvik.system.NativeStart.main(Native Method)
                                                                                Caused by: java.lang.NullPointerException
                                                                                   at com.lucafalasca.mastermind_20.MainActivity.addPanel(MainActivity.java:30)
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                   at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                                                                                   at android.view.View.performClick(View.java:4640)
                                                                                   at android.view.View$PerformClick.run(View.java:19425)
                                                                                   at android.os.Handler.handleCallback(Handler.java:733)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                   at android.os.Looper.loop(Looper.java:146)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5593)
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                                                                   at dalvik.system.NativeStart.main(Native Method)
« Ultima modifica: 08 Giugno 2016, 20:34:03 CEST da lucabasket08, Reason: Merged DoublePost »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 580
  • Respect: +130
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:LinearLayout
« Risposta #13 il: 09 Giugno 2016, 14:18:26 CEST »
0
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.