Android TextView hat eine Höhe und Breite von 0
Ich habe ein kleines Projekt wo ich will, um die Wiederverwendung einer bestimmten UI-Komponente ein paar mal, so dass ich erstellt ein widget, durch den ausbau einer ViewGroup. In diesem ViewGroup ich aufgeblasen, eine Ansicht, die eine TextView innerhalb eines LinearLayout Hinzugefügt und diesen aufgeblasenen Blick auf die ViewGroup Trog addView.
Den äußeren LinearLayout weitet sich perfekt, aber die innere TextView haben getHeight() = 0 und getWith() = 0 wenn ich es durch Hierarchie-Viewer. Das merkwürdige ist, dass layout_height und layout_width die Werte, die ich gab Ihnen meine xml.
Habe ich nicht den code hier ein, aber es sah so etwas wie dieses:
xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="random text.."
android:layout_with="200px"
android:layout_height="50px" />
</LinearLayout>
Java:
class MyWidget extends ViewGroup {
...
//In constructor
myView = View.inflate(context, R.layout.xml, null);
addView(myView);
//In layout
myView.layout(l, t, r, b);
Habe ich versucht zu geben, mein text anzeigen fill_parent Werte für die Größe, aber es hat nicht geholfen.
layout_width
fehlt ein - d
. Dass wahrscheinlich nicht helfen. InformationsquelleAutor der Frage MrFroYo | 2011-04-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu finden, die Breite Und die Höhe der
View
, bevor es gezeichnet wird:Ersten Aufruf
measure
Jetzt können Sie Breite mit
getMeasuredWidth
und Höhe mitgetMeasuredHeight
Habe ich geschrieben, einige weitere Ideen: How to get Breite/Höhe einer Ansicht
InformationsquelleAutor der Antwort Sherif elKhatib
1) Hier finden Sie einige links zu verwenden Hierarchie-Viewer auf deinem dev phone.
http://developer.android.com/guide/developing/debugging/debugging-ui.html
und die Klasse, die Sie benötigen:
http://github.com/romainguy/ViewServer
2) Sie können auch die Wiederverwendung von layout wie eine Komponente mit dem include-tag:
InformationsquelleAutor der Antwort plus-
So, ich setzte ein Kopfgeld auf diesen einen, und hier ist was ich gefunden habe.
Aufblasen mit einer
null
Referenz ist Eine Schlechte Idee(TM). Im wesentlichen, dass Anzeigen nicht bekommen, die richtige layout-Parameter, die er braucht (seine Eltern setzt eine ganze Reihe von Ihnen, mit einem ganzen Bündel von Magie/Logik). So aufblasen in null bedeutet, dass keine Eltern und keine geerbte layout-Parameter. Eine kann manuell eine Reihe von diese Parameter werden aber aufgrund der Magie beteiligt es könnte nicht Ihr problem lösen."Lösung(s)", die ich habe kommen mit einzubinden; mit einschließen (wenn Sie wissen, wie viele Sie brauchen), und ziehen Sie in code, oder das aufblasen einer übergeordneten (wenn Sie brauchen echte dynamische, N Dinge). Und natürlich, das XML, das Sie aufblasen müssen-ID-Kollisionen, so dass ich es durch ergreifen des letzten Kindes (z.B. getChildAt(getChildCount()-1) ), was ich Suche, etc.
InformationsquelleAutor der Antwort JohnO
Haben Sie versuchen, übergeben Sie sich als root:
Da Sie die Eltern von dieser Ansicht entspricht die javadoc-Spezifikation.
InformationsquelleAutor der Antwort Femi