2015-02-27 18 views
7

Ich bin neu in Android Dev und ich habe Probleme beim Versuch, die minimale Höhe eines it.gmariotti.cardslib.library.view.CardView programmgesteuert festzulegen. Ich erstelle eine neue Instanz einer CardView und setze alle xml-Elemente in Code, aber dies hat keine Auswirkungen auf die cardView. Ich blase den Cardview nicht von XML auf.CardView Höhe programmgesteuert einstellen

CardView catCard = new CardView(getActivity()); 

    catCard.setBackgroundColor(Color.green(0)); 

    catCard.setMinimumHeight(10); 
    catCard.setBottom(0); 
    catCard.setExpanded(false); 
+0

Ist Ihre Ansicht hinzugefügt eine beliebige Ansichtshierarchie oder ein Layout? Die Größe einer Ansicht hängt von ihrem Layout ab. Um sicher zu sein, dass ich Ihre Frage verstehe, haben Sie es tatsächlich geschafft, die Höhe beim Aufblasen aus XML erfolgreich festzulegen, und Sie möchten wissen, wie Sie dies über Code tun können, oder haben Sie die Höhe in dieser Ansicht auch nicht festgelegt aus XML aufblasen? – JHH

+0

Ich füge die CardView in das LinearLayout und es funktioniert mit allen relevanten Daten, aber die oben verwendeten Methoden haben keinen Einfluss auf die Karte. Ich konnte die Höhe nicht einstellen, da ich die Ansicht von xml nicht aufblase, sondern eine neue Karte erstelle und sie der XML-Datei hinzufüge, die aufgeblasen wird. –

Antwort

4

CardView erweitert FrameLayout so sollten Sie in der Lage sein LayoutParams einzustellen. Probieren Sie etwas wie folgt aus:

CardView.LayoutParams layoutParams = (CardView.LayoutParams) 
      catCard.getLayoutParams(); 
    layoutParams.height = 10; 

, vergessen Sie nicht, dass Schränkweite ist ebenfalls erforderlich. Oder erstellen Sie neue LayoutParams wie folgt (nicht getestet):

CardView catCard = new CardView(getApplicationContext()); 
// sets width to wrap content and height to 10 dp -> 
catCard.setLayoutParams(new CardView.LayoutParams(
    CardView.LayoutParams.WRAP_CONTENT, 10)); 

catCard.setMinimumHeight(10); 
+0

Vielen Dank für Ihre Antwort, aber ich habe versucht, dies bereits, aber ich bekomme einen Fehler. Wahrscheinlich, weil ich nur die Höhe eingestellt habe. Versuche Breite und Höhe. Was meinst du mit "neue LayoutParams erstellen"? –

+0

Ich redigiere meine Antwort, hoffe es hilft. Möglicherweise möchten Sie zuerst versuchen, neue LayoutParams zu erstellen und dann die Höhe mit dem obigen Code festzulegen. CardView.LayoutParams layoutParams = (CardView.LayoutParams) catCard.getLayoutParams(); layoutParams.height = 10; –

4
myCardView.setLayoutParams(new RelativeLayout.LayoutParams(20, 20)); 

es hängt davon ab, dass Ihr cardview ein Kind des Layouts ist, in diesem Fall ist es unter Relative-Layout ist

Verwandte Themen