1. Manfred, 11.02.2009 #1
    Manfred

    Manfred Threadstarter Erfahrener Benutzer

    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

    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

    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

    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

    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


    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

    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"/>