1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. no1Ltan, 08.08.2018 #1
    no1Ltan

    no1Ltan Threadstarter Android-Hilfe.de Mitglied

    Hallo Leute,

    ich möchte gerne folgendes realisieren:
    Beim Klick auf einen Button soll ein Menü geöffnet werden, das aus vielen Buttons besteht.
    Der 1. Button aktiviert ein Farbmenü, die Buttons innerhalb dieses Farbmenüs stellen die Farben dar.

    Skizziert würde das so hier aussehen:
    [​IMG]

    (Wie z.B. bei MS Paint, wenn man auf den Button "Palette bearbeiten" klickt.)

    Meine erste Idee war es, zwei Layouts übereinander zu legen.
    Der Button des 1. Layouts setzt die Sichtbarkeit des 2. Layouts auf sichtbar.
    Beim Klick eines beliebigen Buttons (in der Farbauswahl) wird das 2. Layout wieder auf unsichtbar gestellt.

    Meine Frage:
    Ist die Grundidee gut oder gibt es vielleicht bessere Wege?
    In der Palette (Layouts, Buttons etc.) gibt's ja so viel Auswahl, aber ich kenne gefühlt nur 5% der Elemente...

    Danke für jede Hilfe!
     
  2. jogimuc, 08.08.2018 #2
    jogimuc

    jogimuc Erfahrener Benutzer

    Hi warum benutzt du nicht einen ColorpickerDialog?

    https://www.google.de/url?sa=t&rct=...=7qXwgD45b4w&usg=AOvVaw1eO6kvfXeeiXgXc_Q05tyh

    https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&uact=8&ved=2ahUKEwjm6N27393cAhWDCewKHR8NDfYQwqsBMAR6BAgAEAo&url=https://www.youtube.com/watch?v=pXRbOt6p-OQ&usg=AOvVaw2jMOoZAzHJM39PcI9G1AXu


    Die Grundidee mit den sichtbar und unsichtbar finde ich nicht so gut.
    Entweder eine zweite Activity für die Farbauswahl mit rückgabe der Farbe über den Intent zur ersten Activity.
    Oder du baust die Farbauswahl in einen Dialog den du mit dem Button startest.

    Ps. ich habe gesehen das du die frage auch noch in einem zweiten Forum hast .
    Meist ist das etwas Kontraproduktiv die Erfahrung zeigt das man da durcheinander kommt.
     
    Zuletzt bearbeitet: 08.08.2018
    enrem, no1Ltan, deek und 2 andere haben sich bedankt.
  3. deek, 09.08.2018 #3
    deek

    deek Android-Experte

    Ich würde auch vorschlagen eine bestehende ColorPicker Library zu verwenden. Da gibt es sicherlich genug qualitativ gute Auswahl.

    Wenn es dir darum geht sowas zu lernen und du es selbst machen willst stimm eich jogimuc zu. Das mit dem versteckten Layout ist nicht soo toll.
    Entweder mit einem Dialog oder einem PopupWindow wäre das etwas schöner.
     
    no1Ltan bedankt sich.
  4. no1Ltan, 10.08.2018 #4
    no1Ltan

    no1Ltan Threadstarter Android-Hilfe.de Mitglied

    Hallo und danke für eure Hilfe!

    Ich habe Fortschritte gemacht.
    In einer Activity habe ich Buttons erstellt, welche eine andere Activity öffnen und automatisch die Hintergrundfarbe ändern.
    (Heißt also, dass ich das eigentliche Problem schon gelöst habe.)
    Allerdings gibt's noch ein paar kleine Unklarheiten, die wir evt. gemeinsam lösen können.

    In meiner MainActivity.java habe ich folgenden Code:

    Code:
    package com.example.USER.startanotheractivity;
    
    import android.content.Intent;
    import android.graphics.Color;
    import android.support.constraint.ConstraintLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.EditText;
    
    public class MainActivity extends AppCompatActivity
    {
        public static final String EXTRA_MESSAGE = "com.example.USER.startanotheractivity";
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void changeColorBrown(View view)
        {
            Intent intentColor = new Intent(MainActivity.this, DisplayMessageActivity.class);
            int backgroundColor = R.color.brown;
            intentColor.putExtra("backgroundColor", backgroundColor);
            startActivity(intentColor);
        }
        public void changeColorBlue(View view)
        {
            Intent intentColor = new Intent(MainActivity.this, DisplayMessageActivity.class);
            int backgroundColor = R.color.blue;
            intentColor.putExtra("backgroundColor", backgroundColor);
            startActivity(intentColor);
        }
        public void changeColorRed(View view)
        {
            Intent intentColor = new Intent(MainActivity.this, DisplayMessageActivity.class);
            int backgroundColor = R.color.red;
            intentColor.putExtra("backgroundColor", backgroundColor);
            startActivity(intentColor);
        }
        public void switchActivity(View view)
        {
            Intent intent = new Intent(MainActivity.this, DisplayMessageActivity.class);
            startActivity(intent);
        }
    }
    
    In der activity_main.xml sieht es folgendermaßen aus:

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/con_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.USER.startanotheractivity.MainActivity">
    
        <Button
            android:id="@+id/button_change_color_brown"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:text="@string/button_change_color_brown"
            android:onClick="changeColorBrown"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:text="@string/button_change_color_brown" />
    
        <Button
            android:id="@+id/button_change_color_blue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginTop="8dp"
            android:onClick="changeColorBlue"
            android:text="@string/button_change_color_blue"
            tools:text="@string/button_change_color_blue"
            app:layout_constraintBottom_toTopOf="@+id/button_change_color_brown"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <Button
            android:id="@+id/button_change_color_red"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginTop="8dp"
            android:onClick="changeColorRed"
            android:text="@string/button_change_color_red"
            app:layout_constraintBottom_toTopOf="@+id/button_change_color_brown"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/button_change_color_blue" />
    
        <Button
            android:id="@+id/button_start_activity"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginTop="16dp"
            android:onClick="switchActivity"
            android:text="@string/button_start_activity"
            app:layout_constraintBottom_toTopOf="@+id/button_change_color_blue"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </android.support.constraint.ConstraintLayout>
    
    Die zweite Activity heißt DisplayMessageActivity.java und verfügt über folgenden Code:

    Code:
    package com.example.USER.startanotheractivity;
    
    import android.content.Intent;
    import android.graphics.drawable.ColorDrawable;
    import android.support.constraint.ConstraintLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    public class DisplayMessageActivity extends AppCompatActivity
    {
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_display_message);
            int backgroundColor = getIntent().getIntExtra("backgroundColor", 0);
            ConstraintLayout con_layout_second_activity = (ConstraintLayout) findViewById(R.id.con_layout_second_activity);
            con_layout_second_activity.setBackgroundResource(backgroundColor);       
        }
    }
    
    Unklarheiten, die ich aktuell habe:
    1) Codes zusammenfassen
    Aus AutoHotkey weiß ich, dass es sinnvoll ist, gleiche Programmcodezeilen zusammenzufassen.
    Z.B. habe ich 3x diesen Programmblock in der MainActivity.java:

    Code:
            Intent intentColor = new Intent(MainActivity.this, DisplayMessageActivity.class);
            int backgroundColor = R.color.blue;
            intentColor.putExtra("backgroundColor", backgroundColor);
            startActivity(intentColor);
    
    Der Unterschied ist nur der Farbwert - alles andere ist gleich.
    In AutohotKey würde ich statt des Farbwerts eine Variable nehmen und beim Aufruf der Funktion die Variable definieren.
    Hab leider keine Ahnung, ob oder wie das hier geht.

    2) Text
    Auch wenn es kein echtes Problem ist, wundert es mich, warum die Button-Beschriftungen alle in Großbuchstaben sind.
    Statt Blue, Red, Brown und Start Activity steht:
    BLUE, RED, BROWN und START ACTIVITY.

    3) Speichern der Hintergrundfarbe
    Sobald ich auf einen Farb-Button klicke, öffnet sich die zweite Activity und die Hintergrundfarbe wurde korrekt festgelegt.
    Gehe ich zurück und klicke auf den Button Start Activity, ist die Hintergrundfarbe wieder weiß.
    Warum?
    Ich dachte, die bundles speichern den Zustand der Activity.
    Achso und public static final String EXTRA_MESSAGE = "com.example.USER.startanotheractivity"; brauche ich evt. gar nicht mehr.

    Danke nochmals für euren Support!

    P.S. Werde jetzt vorerst nur noch in diesem Forum posten.
     
  5. jogimuc, 10.08.2018 #5
    jogimuc

    jogimuc Erfahrener Benutzer

    Hallo,

    Frage 1
    Dann schreibe eine Methode dafür.

    public startIntent(int color){
    Intent intentColor = new Intent(MainActivity.this, DisplayMessageActivity.class);
    intentColor.putExtra("backgroundColor", color);
    startActivity(intentColor);
    }
    Aufruf aus der onClick
    startIntent(R.color.blue);

    Frage 2
    Kann in deinen Code die Zeilen nicht finden „BLUE, RED, BROWN und START ACTIVITY.“
    Grossbuchstaben verwendet man üblicherweise für String Kostanten. Damit man gleich weis das es eine Konstante ist.

    Frage 3
    Du startest mit dem Intent eine zweite neue Activity dabei wird die alte Activity zerstört.
    Beim Zurück zur ersten Activity wird sie wieder neu gestartet es wird auch wieder die onCreate aufgerufen. Und das Layout wieder neu aus dem XML geladen.

    Beim zurück übergibst du aber kein Bundle und in der esten Activity fragst du auch keines ab und setzt die neuen Werte zB.mit setbackgroundcolor .

    Ich würde die Farbwerte in SharedPreferences speichern und immer in der onCreate setzen.
    Denn eigentlich willst du doch in deiner Zweiten Activity einen Farbwähler haben. Und den vom Farbwähler zurück gegebene wert speicherst du in der SharedPreferences.
    Wenn du nun zurück zur ersten gehst wird sie neu gestartet und anschließend in der onCreate die Farben der Button überschrieben.
    Beim Intent musst du aber auch den entsprechenden Key des SharedPreferences ,mit übergeben.



    Ja den final String brauchst du so in deiner App nicht.
     
    Zuletzt bearbeitet: 11.08.2018
  6. Optimist, 10.08.2018 #6
    Optimist

    Optimist Neuer Benutzer

  7. no1Ltan, 11.08.2018 #7
    no1Ltan

    no1Ltan Threadstarter Android-Hilfe.de Mitglied

    Ok, super!
    Also das mit den SharedPreferences und dem Intent hat geklappt - das sagt zumindest der Test.
    An den xml-Dateien habe ich nichts verändert, daher werde ich sie auch nicht nochmal posten.

    Den SwitchActivity-Button in der MainActivity habe ich nur testweise drin gelassen,
    um zu sehen, ob die Farbe tatsächlich gespeichert wurde.
    Ja, wurde sie.

    MainActivity:
    Code:
    package com.example.USER.startanotheractivity;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.graphics.Color;
    import android.support.constraint.ConstraintLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.EditText;
    
    public class MainActivity extends AppCompatActivity
    {
        String colourSelected = "";
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        public void setColor()
        {
            Intent intentColor = new Intent(MainActivity.this, DisplayMessageActivity.class);
            SharedPreferences prefs = getSharedPreferences("bgColour", MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putString("colour", colourSelected);
            editor.commit();
            startActivity(intentColor);
        }
        public void changeColorBrown(View view)
        {
            colourSelected = "Brown";
            setColor();
        }
        public void changeColorBlue(View view)
        {
            colourSelected = "Blue";
            setColor();
        }
        public void changeColorRed(View view)
        {
            colourSelected = "Red";
            setColor();
        }
        public void switchActivity(View view)
        {
            Intent intent = new Intent(MainActivity.this, DisplayMessageActivity.class);
            startActivity(intent);
        }
    }
    
    DisplayMessageActivity:

    Code:
    package com.example.USER.startanotheractivity;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.graphics.Color;
    import android.graphics.drawable.ColorDrawable;
    import android.preference.PreferenceManager;
    import android.support.constraint.ConstraintLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    
    public class DisplayMessageActivity extends AppCompatActivity
    {
        String colour;
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_display_message);
            SharedPreferences prefs = getSharedPreferences("bgColour", MODE_PRIVATE);
            colour = prefs.getString("colour", "WHITE");
            ConstraintLayout con_layout_second_activity = (ConstraintLayout) findViewById(R.id.con_layout_second_activity);
            if (colour == "Brown")
            {
                con_layout_second_activity.setBackgroundResource(R.color.brown);
            }
            if (colour == "Red")
            {
                con_layout_second_activity.setBackgroundResource(R.color.red);
            }
            if (colour == "Blue")
            {
                con_layout_second_activity.setBackgroundResource(R.color.blue);
            }
        }
    }
    
    Wenn euch irgendwas negatives auffällt, dürft ihr das sehr gerne erwähnen :)
    Vielleicht kann man die If-Statements durch ein Array ersetzen und stattdessen die Elemente des Arrays durchsuchen.
    (So hätte ich es zumindest bei AutoHotkey gemacht.)

    Ach und bezüglich des Themes:
    Das Problem ist, dass ich beim DefaultTheme nichts sehe - es ist alles weiß.
    Buttons, Layouts, TextViews - alles nicht sichtbar.
    Erst wenn ich das Theme ändere, z.B. in Light, sehe ich alles.
    Vielleicht irgendein Bug.

    Danke nochmals für eure Hilfe!
     
  8. jogimuc, 11.08.2018 #8
    jogimuc

    jogimuc Erfahrener Benutzer

    Hi ja so kann man das auch machen.
    Nur dachte ich das du die Button in der Main nach dem Rücksprung von der Zweiten zu MainActivity einfärben wolltest.
    Ich würde in SharedPreferences gleich den "int" Wert der Farbe oder der Resource speichern dann brauchst du keine if in der zweiten Activity.


    Das mit den Pefernces hatte ich eigentlich so gedacht das du in der zweiten Activity eine Farbe bestimmst zB. mit dem Colorpicker und den in den Prefernces speicherst. Damit er beim nächsten start der App oder beim Rücksprung den Button färben kann.

    So mach das ganze wenig Sinn.

    Wenn es dir so gefällt ok.
    Bitte höre auf in dieser Script Sprache zu denken. Benutze Übergabewerte in Methoden und mach nicht alle Variablen Gobal. Die du auch der Methode übergeben hättest können.
    Das gibt es wohl in der Win Script Sprache nicht? Funktionen mit Parametern meine ich.

    Zum Thema mit den Button wie sieht deine string.xml und style.xml aus?
     
    Zuletzt bearbeitet: 11.08.2018
  9. swa00, 11.08.2018 #9
    swa00

    swa00 Moderator Team-Mitglied

    ... und vor allem gibt es keine globalen Variablen , wie in anderen Programiersprachen üblich.
    Android kann Dir jederzeit diese Variablen und Werte klauen und sind somit nichtig. (z.b. GC)

    Unter Android verwendet man dazu dann Singleton Klassen
     
  10. jogimuc, 11.08.2018 #10
    jogimuc

    jogimuc Erfahrener Benutzer

    Hallo @saw00 mit Global meinte ich nicht Global in der App oder dem Packet.
    Sondern viel mehr den Klassen Rumpf von der Activity.
    Können diese auch vom GC zerstört werden wenn die Activity läuft ? Ich denke nein. Nur wenn die Activity im Hintergrund oder Gestoppt ist .
    Eine static sollte bis zu onDestroy erhalten bleiben. Kannst du mir das Bestätigen würde mich echt Interesieren.
     
    Zuletzt bearbeitet: 11.08.2018
  11. swa00, 12.08.2018 #11
    swa00

    swa00 Moderator Team-Mitglied

    Öhm , Jörg , das kam falsch rüber :
    Das war ein zusätzlicher Hinweis an den TE , keine Kritik an Deinem EInsatz :)
     
  12. no1Ltan, 12.08.2018 #12
    no1Ltan

    no1Ltan Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    ursprünglich war das mit den Buttons und Activities ja anders gedacht, richtig.
    Allerdings bin ich derzeit in der Experimentierphase.
    Ich möchte so viel Erfahrung wie möglich sammeln.

    Bin auch leider kein echter Programmierer.
    Habe nur etwas Erfahrung mit lua (Logitech) und C++ (AutoHotkey).
    Daher dachte ich, es würde mir helfen, in Skriptsprache zu denken.
    Und ja, bei AutoHotkey kann man natürlich sowohl Werte als auch Variablen an Funktionen übergeben.
    (Falls das deine Frage war.)
    Ich glaube, dass Methoden (Java) nur ein anderer Begriff für Funktionen (lua, C++) sind.

    Okay, back to topic:
    Bezüglich des int-Wertes einer Farbe muss ich gleich mal fragen:
    Handelt es sich hier um die Farbnummer aus der colors.xml?
    Gehen wir mal davon aus, dass das hier meine Farbliste ist:

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="white">#ffffff</color>
        <color name="yellow">#f7dc6f</color>
        <color name="orange">#e67e22</color>
        <color name="pink">#ff1493</color>
        <color name="red">#e74c3c</color>
        <color name="violet">#5b2c6f</color>
        <color name="green">#2ecc71</color>
        <color name="blue">   #1b4f72</color>
        <color name="silver">#b3b6b7</color>
        <color name="brown">#784212   </color>
        <color name="black">#000000   </color>
    </resources>
    
    Heißt das, white = int 1, yellow = int 2 etc.?

    Habe die Codes der MainActivity.java und DisplayMessageActivity.java überarbeitet.
    In der MainActivity.java gibt's jetzt keine globalen Variablen mehr.
    Außerdem übergebe ich keinen String mehr an den Intent, sondern einen int-Wert.
    In der DisplayMessageActivity.java arbeite ich auch nicht mehr mit setBackgroundRessorce, sondern mit setBackgroundColor.
    (Ressource scheint int-Werte nicht zu mögen)

    MainActivity.java
    Code:
    package com.example.USER.startanotheractivity;
    import android.content.Intent;
    import android.content.SharedPreferences;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    
    public class MainActivity extends AppCompatActivity
    {
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        public void setColor(int colorNumber)
        {
            Intent intentColor = new Intent(MainActivity.this, DisplayMessageActivity.class);
            SharedPreferences prefs = getSharedPreferences("bgColor", MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putInt("color", colorNumber);
            editor.commit();
            startActivity(intentColor);
        }
        public void changeColorBrown(View view)
        {
            int colorNumber = 10;
            setColor(colorNumber);
        }
        public void changeColorBlue(View view)
        {
            int colorNumber = 8;
            setColor(colorNumber);
        }
        public void changeColorRed(View view)
        {
            int colorNumber = 5;
            setColor(colorNumber);
        }
        public void switchActivity(View view)
        {
            Intent intent = new Intent(MainActivity.this, DisplayMessageActivity.class);
            startActivity(intent);
        }
    }
    
    DisplayMessageActivity.java:

    Code:
    package com.example.USER.startanotheractivity;
    import android.content.SharedPreferences;
    import android.support.constraint.ConstraintLayout;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    public class DisplayMessageActivity extends AppCompatActivity
    {
        int colorNumber;
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_display_message);
            SharedPreferences prefs = getSharedPreferences("bgColor", MODE_PRIVATE);
            colorNumber = prefs.getInt("color", colorNumber);
            ConstraintLayout con_layout_second_activity = (ConstraintLayout) findViewById(R.id.con_layout_second_activity);
            con_layout_second_activity.setBackgroundColor(colorNumber);
        }
    }
    
    Es funktioniert übrigens NICHT.
    Vorher ging es, aber ich wollte ja gern die überflüssigen if-Statements loswerden.
    (Weniger ist mehr.)

    Bezüglich des Problems mit den Themen:
    An der styles.xml habe ich nie was gemacht:

    Code:
    <resources>
    
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    
    </resources>
    
    Grüße
     
  13. jogimuc, 12.08.2018 #13
    jogimuc

    jogimuc Erfahrener Benutzer

    Hallo
    Nein das heißt es nicht. Das ist kein Array. Das sind Key / Wertpaare. Ressourcen werden immer in Key Wertpaaren gespeichert Über den Key kannst du die Ressource ansprechen.

    Stimmt nicht ganz Ressourcen sind genaugenommen nur „int“ Werte. Deshalb kannst du sie auch in einer „Int“ Variablen Speicher musst ihn dir aber erst holen.
    Zb. int color = getResources().getColor(R.color.red);


    Kann leider nicht gehen denn 10 ist kein Farbwert.
    Farben sind auch int Werte 16Bit bestehend aus ARGB , A ist der alpha Kanal, R rot , G grün , B blau. Jeder Kanal 8 Bit breit.


    Code:
    public void changeColorBrown(View view)
        {
             setColor(getResources().getColor(R.color.brown);
        }
    -- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
    Zum Thema mit den Button

    mich hätte eigentlich mehr deine String.xml Interessiert.
    Was da zb. für die Ressource „button_change_color_brown“ steht.

    Denn in deinem Layout benutzt du für den Text eine Ressourse .
    android:text="@string/button_change_color_brown"

    und nicht Hard-Codeten Text
    android:text="Braun“

    Wenn in dieser Ressource keine Groß Buchstaben sind liegt es amTheme wie @Optimist schon sagte.

    Welches Theme hast du im manifest eingestellt?




    Nein denke ich nicht, glaube eher du hast die Farben aus der colors.xml gelöscht.

    Code:
    
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="colorPrimary">#3F51B5</color>
        <color name="colorPrimaryDark">#303F9F</color>
        <color name="colorAccent">#FF4081</color>
    </resources>
    Für das AppTheme werden genau diese Farben benutzt siehe styles.xml und die hast du gelöscht.
     
    Zuletzt bearbeitet: 12.08.2018
  14. jogimuc, 12.08.2018 #14
    jogimuc

    jogimuc Erfahrener Benutzer

    Lua kenne ich auch ist sehr c ähnlich. Habe das für Canon Kameras verwendet.

    Aber mit AutoHotkey kann ich mich nicht anfreunden . Ist dem Basic ähnlich aber da gefällt mir visualbasic doch bessen.
     
    Zuletzt bearbeitet: 12.08.2018
  15. no1Ltan, 13.08.2018 #15
    no1Ltan

    no1Ltan Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    die Variante mit

    Code:
        public void changeColorBrown(View view)
        {
            setColor(getResources().getColor(R.color.brown));
        }
    
    klappt super!

    Laut des Editors brauche ich das getColor nicht mal (es ist durchgestrichen).
    Liegt anscheinend daran, dass ich API23 gewählt habe.
    Die Alternative habe aber nicht hinbekommen, daher lasse ich es erstmal so.

    Die AndroidManifest.xml ist die hier:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.USER.startanotheractivity">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name=".DisplayMessageActivity"
                android:parentActivityName=".MainActivity">
                <!-- The meta-data tag is required if you support API level 15 and lower -->
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value=".MainActivity" />
            </activity>
        </application>
    
    </manifest>
    
    In der colors.xml habe ich die colorPrimary, colorPrimaryDark und colorAccent nicht gelöscht.
    Ich hatte sie im letzten Beitrag nicht drin, da ich das dort nur als Beispiel nahm.

    Jetzt gerade sieht mein Design so hier aus:
    [​IMG]

    Wenn ich darauf hin dann das Theme wechsele, z.B. das hier:
    [​IMG]

    Sieht alles einwandfrei aus:
    [​IMG]

    Grüße
     
  16. jogimuc, 13.08.2018 #16
    jogimuc

    jogimuc Erfahrener Benutzer

    Hallo das mit der Ansicht im Designer denke ich liegt an dem bekanten Problem mit API 28.
    Da hat Android Probleme kann sein das es in der neusten Version behoben ist.
    Denn du hast im ersten Bild oben rechts auch ein rotes Icon was auf Renderfehler Hinweist
    Deshalb entwickle ich nicht auf API 28 sondern API 27

    Wo hast du denn deine Vermutlichen Api 23 eingestellt?
    Denke du meinst die minSDK Version.
    Übrigens die API Version wird im Gradle File eingestellt.


    Ich empfehle dir im Sdk Manager api 28 zu löschen und 27 zu Installieren.
    Wenn du nun ein neues Projekt erstellst wir es für Api 27 und nicht Api 28 erstellt.
    Alles was du im Designer einstellst wirkt sich nur auf die Anzeige aus damit kannst du prüfen wie es auf einen Entsprechenden Gerät aus sehen würde .

    Wird denn das Theme „Ligth“ auch entweder im Layout (dazu schaue dir das Layout im XML an) oder im Manifest auch gespeichert? Wenn nicht ist das nur eine Anzeige wie es unter diesem Theme aussehen würde .
    Dein AppTheme laut styles.xml ist "Theme.AppCompat.Light.DarkActionBar"
    Im manifest wird das AppTheme benutz und nach dem Build ist es ja auch ok.

    Der Fehler von Android Studio ist im Designer das xml ist richtig.



    Heißt nicht , das du das nicht brauchst sondern das die Methode deprecated ist.
     
    Zuletzt bearbeitet: 14.08.2018
Die Seite wird geladen...
Ähnliche Themen Forum Datum
AlertDialog in Landscape ohne Button Android App Entwicklung 05.08.2018
Alertdialog mit Button erweitern Android App Entwicklung 02.02.2018
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.