Programmgesteuert mithilfe MATCH_PARENT für ein RelativeLayout innen ein FrameLayout
Ich bin Unterklassen HorizontalScrollView (das ist ein FrameLayout) und das hinzufügen von ein RelativeLayout, um es programmatisch.
Dem FrameLayout korrekt füllt die übergeordnete Sicht, aber RelativeLayout innen nicht zeigen, bis.
MainActivity::OnCreate()
setContentView(R.layout.activity_main);
CustomHorizontalScrollView custom = new CustomHorizontalScrollView(this);
ViewGroup contentView = (ViewGroup) findViewById(R.id.content);
contentView.addView(custom,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 180));
CustomHorizontalScrollView::Constructor()
this.setBackgroundColor(Color.MAGENTA);
relativeLayout = new RelativeLayout(context);
relativeLayout.setBackgroundColor(Color.BLACK);
this.addView(relativeLayout, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
Ergebnis:
Dem RelativeLayout sollte schwarz sein und füllen sollten Eltern aber nicht.
Komisch ist, dass wenn ich geben Sie die Breite und Höhe in Pixeln statt mit MATCH_PARENT, die RelativeLayout wird angezeigt.
this.addView(relativeLayout, new FrameLayout.LayoutParams(90, 90));
Bedeutet das, dass ich nicht verwenden können, MATCH_PARENT, wenn programmgesteuert hinzufügen ein RelativeLayout zu einem FrameLayout? Oder bin ich etwas fehlt? Oder vielleicht HorizontalScrollView unterstützt nur ein Kind zu haben, mit fester Breite und Höhe?
InformationsquelleAutor Lumbi | 2014-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich finde nicht, strengen info in Android-SDK API-Referenz, die aber tatsächlich die HorizontalScrollView ist ein "Layout-container für eine view-Hierarchie, die kann gerollt werden, durch den Benutzer, so dass es größer ist als das physische display."
Also, warum tun Sie müssen eine HorizontalScrollView, wenn seine einzigartige Kind muss die gleiche Breite?
Wahrscheinlich, Sie können versuchen, die folgenden Schritte aus:
... und das RelativeLayout wird angezeigt.
Aber vielleicht sind die folgenden mehr Sinn macht:
Dann das RelativeLayout wird groß genug sein, um seine Kinder, und Sie können Blättern Sie mit der HorizontalScrollView.
Die HorizontalScrollView hat die Eigenschaft, fillViewport, die Sie auf true setzen können, wenn Sie wollen
dass die HorizontalScrollView "stretch dessen Inhalt zu füllen viewport": ich denke, es kann nur sinnvoll sein, wenn der Inhalt ist weniger groß als die HorizontalScrollView, aber (ich wiederhole mich), wenn der Inhalt IMMER weniger groß als die HorizontalScrollView, dann die HorizontalScrollView ist nutzlos.
InformationsquelleAutor Dario Scoppelletti