1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

TextView durch Background nicht sichtbar

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Manfred, 11.02.2009.

  1. Manfred, 11.02.2009 #1
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    14
    Registriert seit:
    03.02.2009
    Hallo!

    Ich setze ein Hintergrundbild mit
    Code:
    setBackgroundDrawable(getResources().getDrawable(R.drawable.back));
    und habe auf diesem Layout auch TextViews. Diese werden aber überdeckt durch den Background. Setze ich kein Hintergrundbild, sehe ich die Views.

    Kann man die irgendwie eine Ebene nach vorne setzen??

    Danke!
     
  2. friedger, 11.02.2009 #2
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    Ich würde den Hintergrund breits im XML definieren, statt dynamisch zu laden. Aber selbst damit hatte ich bisher nie Probleme.
    Was für ein Layout ist das denn?
    Mehr Code und Details würden helfen :)
    Friedger
     
  3. enjoy_android, 11.02.2009 #3
    enjoy_android

    enjoy_android Android-Lexikon

    Beiträge:
    1,258
    Erhaltene Danke:
    390
    Registriert seit:
    10.12.2008
    Setzt du das Hintergrundbild direkt auf die TextView oder ein allgemeines Bild für das gesamte Layout?
     
  4. Manfred, 11.02.2009 #4
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    14
    Registriert seit:
    03.02.2009
    Also ist recht kompliziert!

    Aus einer Activity heraus, starte ich ein Intent (=ListActivity) der folgenden Code beinhaltet:

    Code:
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.game); 
            
            gf = new Gamefield(this);
            gf.setBackgroundDrawable(getResources().getDrawable(R.drawable.back));
            gf.neueRunde();
            this.addContentView(gf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    Das Gamefield ist ein View
    Game layout:
    Code:
    <AbsoluteLayout android:id="@+id/AbsoluteLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android">
    
    <ListView android:id="@+id/android:list" android:layout_width="wrap_content" android:layout_height="wrap_content"></ListView>
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/TextViewBank" android:layout_y="300px" android:layout_x="200px" android:text="Bank:"></TextView>
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/TextViewPunkte" android:layout_x="5px" android:layout_y="300px" android:text="Player:" android:bufferType="normal"></TextView>
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="100px" android:layout_y="120px" android:textSize="20px" android:id="@+id/TextViewMessage"></TextView>
    
    </AbsoluteLayout>
    Wie ihr seht, "adde" ich einen ContentView hinzu, der nicht im Layout enthalten ist, dieser hat das Hintergrundbild. In der Klasse Gamefield sieht es dann so aus:

    Code:
        public Gamefield(Context context)
        {
            super(context);
            this.ctx = context;
                   
            bank = (TextView) ((Activity)ctx).findViewById(R.id.TextViewBank);
            punkte = (TextView) ((Activity)ctx).findViewById(R.id.TextViewPunkte);
    Ich habe jetzt auch schon versucht am Layout einen View hinzuzufügen und dann dort das bild hinaufzugeben, dass ich die TextViews dann darunter sehe, ging aber auch nicht.
     
    Zuletzt bearbeitet: 11.02.2009
  5. friedger, 11.02.2009 #5
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    addContentView wird meistens für Dialog-ähnliche Views verwendet, ist das dein Ziel für GameView.

    Warum schreibst du GameView nicht einfach ins XML?
     
  6. Manfred, 11.02.2009 #6
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    Beiträge:
    156
    Erhaltene Danke:
    14
    Registriert seit:
    03.02.2009

    Weil ich die onDraw Methode benutzen will, wenn ich das alles ins XML schreibe, wie kann ich das dann tun?
     
  7. friedger, 11.02.2009 #7
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    Du kannst einfach statt z.B. TextView deine eigene Klasse mit qualifiziertem Namen ins XML schreiben.

    Siehe zum Beispiel layout/custome_view_1 in ApiDemo

    <com.example.android.apis.view.LabelView
    android:background="@drawable/red"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    app:text="Red"/>
     

Diese Seite empfehlen