Buttons zeigen Buchstaben untereinander

  • 9 Antworten
  • Letztes Antwortdatum
W

Wolverine566561

Gast
Hallo zusammen!

Ich hab folgendes Problem: Ich habe zur Eingabe von Ziffern einen Ziffernblock aus Buttons gebaut (die Ziffern 0 - 9, einen Bestätigen-Button (OK), einen Löschen-Button (Del) und zwei weitere Buttons, die noch keine Funktion haben.

Das sieht so aus:

[1][2][3]
[4][5][6]
[7][8][9]
[X][0][X]
[X][ ][X]

Die mit X gekennzeichneten Tasten sind die erwähnten "Funktionstasten". In der Mitte der unteren Zeile befindet sich kein Button sondern eine TextView in der die Eingabe angezeigt wird (max. 3 Ziffern ohne führende 0). Das Ganze funktioniert im Prinzip wunderbar, bis auf eine Kleinigkeit: Wenn ich den Okay-Button drücke, wird der eingegebene Wert vom Typ String übergeben und verarbeitet und die TextView zurückgesetzt, damit eine erneute Eingabe erfolgen kann. Wenn ich nun aber den Bestätigen/OK-Button drücke werden die Texte in den Buttons "untereinander" dargestellt, z.B. steht die Buchstaben "OK" statt nebeneinander untereinander und das passiert in jedem Button. Sobald ich eine Ziffer über den Ziffernblock eingebe, sehen alle Buttons wieder "ganz normal" aus.

Weiß vielleicht jemand "aus dem Stand" woran das liegen könnte oder soll ich mal ein bisschen Code posten???

Viele Grüße
 
Zeig mal den Teil des Codes in dem du den String zum TextView schickst.
 
Screenshots wären vielleicht cool. Und die xml von dem layout.
 
Das ist die Methode, die aufgerufen wird, wenn die Anzeige zurückgesetzt wird:

Code:
    // Hilfsmethode für numPadHandler zum Zuruecksetzen der Ergebnisanzeige
    private void resetResultView()
    {
        try
        {
            resultString = null;
            resultTextView.setText("");
        }
        catch (Exception e)
        {
            Log.d(LOG_TAG, "ResultTextView und ResultString konnten nicht zurückgesetzt werden.");
            e.printStackTrace();
        }
    }

Diese Methode wird aufgerufen, um den String bei Eingabe einer Ziffer zu aktualisieren (hier passiert nichts bei der Darstellung der Buttons):

Code:
    private void updateResultView(String resultStr)
    {
        try
        {
            // TextView aktualisieren
            resultTextView.setText(resultStr);
        }
        catch (Exception e)
        {
            Log.d(LOG_TAG, "ResultTextView wurde nicht aktualisiert.");
            e.printStackTrace();
        }
    }

Hier ist mal stellvertretend für alle Zifferneingaben die Behandlung der Ziffer Null:

Code:
        zeroBtn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // Ergebniseingabe nicht länger als 3 Stellen UND Ergebniseingabe darf keine fuehrende 0 haben
                if(resultString.length() < 3 && !resultString.equals(""))
                {
                    resultString += "0";
                    keystroke.start();
                    updateResultView(resultString);
                }
            }       
        });

Und hier ist das, was passiert, wenn der OK-Button gedrückt wird:

Code:
        okayBtn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                // Context initialisieren
                Context context = getApplicationContext();
                // result als temp. Int-Variable zwischenspeichern
                int tempResult = Integer.parseInt(resultString);
                // Audio fuer Applaus initialisieren und Lautstärke festlegen
                MediaPlayer applause = new MediaPlayer();
                applause.setVolume(0.5f, 0.5f);
                
                if(tempResult <= 180)                               // Eingabe kleiner 180
                {
                    if(tempResult < 60)                             // Eingabe < 60
                    {
                        // Call ausgeben
                        playCall(tempResult);
                        // Spielrunde verarbeiten
                        game(tempResult);
                        // Ergebnisausgabe zuruecksetzen
                        resetResultView();
                    }
                    else if(tempResult >= 60 && tempResult < 100)   // 60 <= Eingabe < 100
                    {
                        // Call ausgeben
                        playCall(tempResult);
                        // Applaus ausgeben
                        applause = MediaPlayer.create(context, R.raw.applause60);
                        applause.start();
                        // Spielrunde verarbeiten
                        game(tempResult);
                        // Ergebnisausgabe zuruecksetzen
                        resetResultView();
                    }
                    else if(tempResult >= 100 && tempResult < 140)  // 100 <= Eingabe < 140
                    {
                        // Call ausgeben
                        playCall(tempResult);
                        // Applaus ausgeben
                        applause = MediaPlayer.create(context, R.raw.applause100);
                        applause.start();
                        // Spielrunde verarbeiten
                        game(tempResult);
                        // Ergebnisausgabe zuruecksetzen
                        resetResultView();
                    }
                    else if(tempResult >= 140)                      // Eingabe >= 140
                    {
                        // Call ausgeben
                        playCall(tempResult);
                        // Applaus ausgeben
                        applause = MediaPlayer.create(context, R.raw.applause140);
                        applause.start();
                        // Spielrunde verarbeiten
                        game(tempResult);
                        // Ergebnisausgabe zuruecksetzen
                        resetResultView();
                    }
                }
                else                                                // ueberworfen
                {
                    // Toast-message erzeugen
                    String text = getResources().getString(R.string.toast_message_bust);
                    int duration = Toast.LENGTH_SHORT;
                    Toast.makeText(context, text, duration).show();
                }
            }
        });


Der ursprüngliche Beitrag von 15:03 Uhr wurde um 15:24 Uhr ergänzt:

Das ist die XML des Layouts (komplett):

Code:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/TableLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/tv_sets"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="@string/textview_score"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:id="@+id/textview_legs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="14dp"
                android:layout_toLeftOf="@+id/tv_sets"
                android:text="@string/textview_legs"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:id="@+id/textview_sets"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="15dp"
                android:layout_toLeftOf="@+id/textview_legs"
                android:text="@string/textview_sets"
                android:textAppearance="?android:attr/textAppearanceMedium" />

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <ImageView
                android:id="@+id/img_indicator_player1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/tv_x01_player1"
                android:src="@drawable/ic_launcher"
                android:visibility="visible" />

            <TextView
                android:id="@+id/tv_x01_player1_result"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="@string/textview_total_score_player1"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_x01_player1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/img_indicator_player1"
                android:text="@string/textview_player1"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_legs_player1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="22dp"
                android:layout_toLeftOf="@+id/tv_x01_player1_result"
                android:text="@string/textview_legs_player1"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_sets_player1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="40dp"
                android:layout_toLeftOf="@+id/tv_legs_player1"
                android:text="@string/textview_sets_player1"
                android:textAppearance="?android:attr/textAppearanceLarge" />

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <ImageView
                android:id="@+id/img_indicator_player2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/tv_x01_player2"
                android:src="@drawable/ic_launcher"
                android:visibility="visible" />

            <TextView
                android:id="@+id/tv_x01_player2_result"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="@string/textview_total_score_player2"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_x01_player2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/img_indicator_player2"
                android:text="@string/textview_player2"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_legs_player2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="21dp"
                android:layout_toLeftOf="@+id/tv_x01_player2_result"
                android:text="@string/textview_legs_player2"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_sets_player2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="40dp"
                android:layout_toLeftOf="@+id/tv_legs_player2"
                android:text="@string/textview_sets_player2"
                android:textAppearance="?android:attr/textAppearanceLarge" />

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <ImageView
                android:id="@+id/img_indicator_player3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/tv_x01_player3"
                android:src="@drawable/ic_launcher"
                android:visibility="visible" />

            <TextView
                android:id="@+id/tv_x01_player3_result"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="@string/textview_total_score_player3"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_x01_player3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/img_indicator_player3"
                android:text="@string/textview_player3"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_legs_player3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="21dp"
                android:layout_toLeftOf="@+id/tv_x01_player3_result"
                android:text="@string/textview_legs_player3"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_sets_player3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="40dp"
                android:layout_toLeftOf="@+id/tv_legs_player3"
                android:text="@string/textview_sets_player3"
                android:textAppearance="?android:attr/textAppearanceLarge" />

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
            
            <ImageView
                android:id="@+id/img_indicator_player4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/tv_x01_player4"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:src="@drawable/ic_launcher"
                android:visibility="visible" />

            <TextView
                android:id="@+id/tv_x01_player4_result"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="@string/textview_total_score_player4"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_x01_player4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toRightOf="@+id/img_indicator_player4"
                android:text="@string/textview_player4"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_legs_player4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="22dp"
                android:layout_toLeftOf="@+id/tv_x01_player4_result"
                android:text="@string/textview_legs_player4"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tv_sets_player4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginRight="39dp"
                android:layout_toLeftOf="@+id/tv_legs_player4"
                android:text="@string/textview_sets_player4"
                android:textAppearance="?android:attr/textAppearanceLarge" />

        </RelativeLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1.07" >

        <TextView
            android:id="@+id/tv_finish"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:text="@string/textview_finish"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/tv_check_out"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:text="@string/textview_check_out"
            android:textAppearance="?android:attr/textAppearanceMedium" />

    </LinearLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_weight="0" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_1"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_1" />

            <Button
                android:id="@+id/btn_2"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_2" />

            <Button
                android:id="@+id/btn_3"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_3" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_4"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_4" />

            <Button
                android:id="@+id/btn_5"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_5" />

            <Button
                android:id="@+id/btn_6"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_6" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_7"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_7" />

            <Button
                android:id="@+id/btn_8"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_8" />

            <Button
                android:id="@+id/btn_9"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_9" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_bust"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_bust" />

            <Button
                android:id="@+id/btn_0"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_0" />

            <Button
                android:id="@+id/btn_ok"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_ok" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn_undo"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_undo" />

            <TextView
                android:id="@+id/tv_result"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center_vertical|center_horizontal"
                android:text="@string/textview_result"
                android:textColor="#FFFFFF"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <Button
                android:id="@+id/btn_delete"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/button_delete" />

        </TableRow>

    </TableLayout>

</TableLayout>


Der ursprüngliche Beitrag von 15:24 Uhr wurde um 15:43 Uhr ergänzt:

Hier sind zwei Screenshots zu finden:

https://www.dropbox.com/s/t94p2z2i8v222bk/buttons-wrong.png

https://www.dropbox.com/s/1jc1a6o5rczuh6p/buttons_correct.png
 
Versuch doch mal, ob es noch auftritt, wenn du resetResultView nicht aufrufst beim Klick auf OK
 
Es passiert trotzdem :confused2:
 
Und wenn du nur resetResultView aufrufst?
 
Ich habe es eingrenzen können, bin aber noch verwirrter als vorher! Ich habe zwei Methoden, die den oberen Teil des Layouts aktualisieren (also die Punktestände der Spieler und die Checkoutanzeige, falls ein Checkout möglich ist). Beide Methode ändern aber kein bisschen etwas an dem Ziffernblock :unsure:

Der ursprüngliche Beitrag von 16:22 Uhr wurde um 16:42 Uhr ergänzt:

Es wird noch merkwürdiger: Wenn ich den Code zu einer Methode zusammenbaue, passiert es nicht.

Naja, von mir aus...Sieht nicht schön aus, funktioniert aber fürs Erst mal. Mal schauen, ob ich das irgendwie hinbiegen kann.
 
Zeig doch mal bitte die beiden Methoden und die neue zusammengesetzte.
 
Sorry, dass es ein bisschen gedauert hat. Ich habe herausgefunden, woran es lag und woran es nicht lag! Also der Reihe nach:

Die zusammengebastelte Methode war nur scheinbar eine Lösung, weil der Programmcode, der es scheinbar verursacht hatte zunächst gar nicht erreicht wurde. Deshalb ist auch zuerst nix mehr passiert.

Es lag aber gar nicht an dem Java-Code sondern das Problem war die WEIGHT-Attribute im Layout-File. Ich hatte die einzelnen Elemente des Layouts gewichtet, um den Ziffernblock ganz unten auf der Seite zu platzieren. Nachdem ich da ein paar Anpassungen gemacht hatte, ist der Fehler nicht mehr aufgetreten.

Sollte bei euch irgendwann ein solcher Fehler auftreten, hier eine Beschreibung, wie ich vorgegangen bin:

Ich habe zunächst sämtliche WEIGHT-Attribute entfernt und hab nachgeschaut, ob der Fehler noch auftritt. (Das war bei mir nicht der Fall.)

Danach habe ich durch Trial-and-Error solange angepasst, bis das Ergebnis dem entsprach, was ich wollte.

Ich gebe zu, dass Trial-and-Error nicht der Brüller ist, aber andererseits, ging es doch recht fix und am Ende zählt erstmal nur das Ergebnis. Vielleicht kennt ja noch jemand ein brauchbares Tutorial zum Thema WEIGHT-Attribut. Ich hab auf die schnelle jetzt kein allzu gutes gefunden.

Grüße und vielen Dank nochmal.
 
Zurück
Oben Unten