Ich verwende eine WatchViewStub
auf einer Uhr Aktivität mit Android-Verschleiß (API 23).Breite und Höhe eines WatchViewStub
Ich versuche, seine Breite und Höhe der Ansicht meiner Aktivität zu erhalten, da ich einige Berechnungen von den Berührungsereignissen relativ zur Mitte der Ansicht durchführen möchte.
Leider meine beiden Stummel Ansicht des getWidth()
und getHeight()
immer 0
zurückkehren, auch wenn ich für das Layout warten, indem ein Zuhörer mit setOnLayoutInflatedListener
aufgeblasen werden.
Wie kann ich die tatsächliche Größe der a WatchViewStub
holen?
Hier ist der relevante Teil des Codes:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
Log.d(TAG, stub.getWidth()); // -> 0
Log.d(TAG, stub.getHeight()); // -> 0
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
Log.d(TAG, stub.getWidth()); // -> 0
Log.d(TAG, stub.getHeight()); // -> 0
}
});
}
Sie Funktionen zu früh anrufen werden. Versuchen Sie, 'onMeasure' zu überschreiben – jitinsharma
@jitinsharma Vielen Dank. Allerdings bevorzuge ich eine Lösung, bei der ich die Ansicht nicht überschreiben muss. –