Probleme beim Erstellen eines Layouts (via java)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme beim Erstellen eines Layouts (via java)

    Hallo zusammen,

    ich versuche in einen GridView (um genau zu sein: DraggableGridView) Layouts zu generieren (Hab davor noch nie ein Layout über code erstellt) Basierend auf die Anzahl der Einträge in der Datenbank). Die App stützt auch nicht App, eigentlich macht sie auch fast alles was sie soll. Also das RelativeLayout hat die richtige Größe und auch der Hintergund stimmt.

    Mein Layout soll so aufgebaut sein (xml Vorbild):


    <RelativeLayout
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:background="@drawable/ic_contact_picture_2">

    <LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="Small Text"
    android:id="@+id/textView" />

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:text="Small Text"
    android:id="@+id/textView2" />
    </LinearLayout>
    </RelativeLayout>
    [IMG:http://s7.directupload.net/images/140613/temp/oxkjl9sl.png]


    hier der code:


    for (int i = 0; i < names.length; i++) {


    RelativeLayout relativeLayout = new RelativeLayout(getActivity());
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(150, 150);
    relativeLayout.setLayoutParams(layoutParams);
    relativeLayout.setBackground(new BitmapDrawable(getResources(), getThumb(cursor.getLong(0))));


    RelativeLayout.LayoutParams layoutParams2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    layoutParams2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

    // ab hier geht es nicht mehr :(
    LinearLayout linearLayout = new LinearLayout(getActivity());
    linearLayout.setOrientation(LinearLayout.HORIZONTAL);
    linearLayout.setGravity(Gravity.BOTTOM);

    TextView textView = new TextView(getActivity());
    textView.setTextAppearance(getActivity(), android.R.style.TextAppearance_Small);
    textView.setText("TEST");
    textView.setTextSize(10);
    linearLayout.addView(textView);

    TextView textView2 = new TextView(getActivity());
    textView2.setTextAppearance(getActivity(), android.R.style.TextAppearance_Small);
    textView2.setText("TEST2");
    textView2.setTextSize(10);
    linearLayout.addView(textView2);

    relativeLayout.addView(linearLayout, layoutParams2);




    dgv.addView(relativeLayout);
    cursor.moveToNext();
    }
    Sieht wer den/die Fehler? ^^ Danke schon mal im voraus
  • Mein Layout soll so aufgebaut sein (xml Vorbild):


    Vielleicht hättest du noch ein 2. Bild vom Ist-Zustand ergänzen sollen oder wenigstens beschreiben, inwiefern dein Ergebnis vom Soll-Zustand abweicht;
    So wird es den Mitlesern vermutlich zu aufwendig sein, das ganze Zeug zu analysieren, um eine ordentliche Antwort formulieren zu können.

    Was mir beim Überfliegen aufgefallen ist:
    XML: LinearLayout android:orientation="vertical"
    Code: linearLayout.setOrientation(LinearLayout.HORIZONTAL);
  • sry eigentlich sind da Fotos von Personen, wollte jetzt nur keine Bilder von Leuten ins Netz stellen (Das zentrierte c auf grauen Hintergrund ist ein Bitmap)

    Daher kommt das C mit grauen Hintergrund:


    Hier noch mal eins mit meiner Katze als Hintergrund (und 2 mal ein Buchstabe):
    directupload.net/file/d/3652/3cz9tfdg_png.htm

    private Bitmap getThumb(long id)
    {

    Cursor cursor = myDb.getRowFromTableUser(id);
    byte[] b = cursor.getBlob(DBAdapter.COL_PHOTO);

    if (b != null) {
    return BitmapFactory.decodeByteArray(b, 0, b.length);
    } else {
    Bitmap bmp = Bitmap.createBitmap(150, 150, Bitmap.Config.RGB_565);
    Canvas canvas = new Canvas(bmp);
    Paint paint = new Paint();
    String temp = cursor.getString(DBAdapter.COL_PERSON);
    temp = temp.substring(0,1);
    temp = temp.toUpperCase();
    paint.setColor(Color.rgb(random.nextInt(128 ) , random.nextInt(128 ) , random.nextInt(128 ) ));
    paint.setTextSize(24);
    paint.setTypeface(typeface);
    paint.setFlags(Paint.ANTI_ALIAS_FLAG);
    canvas.drawRect(new Rect(0, 0, 150, 150), paint);
    paint.setColor(Color.WHITE);
    paint.setTextAlign(Paint.Align.CENTER);
    canvas.drawText(temp, 75, 75, paint);
    return bmp;
    }
    }
  • Mit anderen Worten wird optisch das gesamte LinearLayout nicht dargestellt.

    Ich mache meine Layouts immer per .xml, kann hier also auch nur raten - mein erster Versuch wäre, das LinearLayout als solches sichtbar zu machen, etwa mit einem eigenen Hintergrundbild (da weißt du ja schon wie es geht), um herauszufinden, ob und wenn ja wie groß bzw. wo es dargestellt wird.

    Edit: darf man trotzdem die ketzerische Frage stellen, warum du das nicht in .xml machst?
  • um ehrlich zu sein hab ich mich da einfach an die Vorlage gehalten


    Jaja, wieder kopiert ohne es zu verstehen... ;)
    Irgendetwas nicht mitkopiert? Die Vorlage wird ja funktioniert haben, oder?


    ich wüsste gar nicht wie ich das mit einer .xml Datei so umsetzten könnte


    Hm, du hast doch das .xml Layout schon angefertigt, da nimmste nen LayoutInflater und schon haste eine fertige View als Parameter für "dgv.addView(relativeLayout);"