2014-09-20 6 views
6

Leider Moto360 ist nicht auf Europa in Anspruch nehmen noch ...Runde Android Wear Emulator verwendet rect Layouts

Ich laufe eine Runde Android Wear-Emulator und das funktioniert gut.

Allerdings, wenn ich mein Android Wear Aktivität laufen (die eine WatchViewStub verwendet) das Layout verwendet wird, ist die rect_activy_layout und nicht die runde Layout

Sonst noch jemand dieses Problem haben oder aufgelöst, wenn Round Emulator läuft?

Dank

+0

Ich hatte tatsächlich das gleiche Problem auf meiner Moto 360. Ich bin interessiert zu wissen, was jemand anderes getan hat, um dies zu lösen. – kentarosu

+0

abonnieren für diese Frage. Als eine hässliche Problemumgehung, können Sie Ihr rundes Layout wie folgt vorübergehend festlegen: 'app: rectLayout =" @ layout/round_activity_my' " Und es würde Ihr rundes Layout laufen, denken, dass es als eine rect bereitgestellt wird ... –

+0

I hab 'extrem billig gearbeitet. Mein Code ist alles gut für rect, also nachdem ich zugesagt habe, überschreibe ich gerade meine rect-Layouts mit runden Layout-Stil-Code, und sobald ich glücklich bin, kopiere ich und füge meinen runden Layout-Code in die eigentliche round_layout_activity ein und Setzen Sie die geänderte Datei rect_layout zurück. Blah ... –

Antwort

1

Es gibt viele Probleme mit Layouts aufbläst, die durch nicht korrekt mit WatchViewStub verursacht werden. Ich sehe keinen Code genau wissen, aber ein weit verbreitetes Problem ist, wenn Sie einen Listener für Einsätze Uhr registrieren, so dass Sie überprüfen können, ob es rund oder quadratisch in Ihrem onApplyWindowInsets Handler ist:

final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); 
    stub.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() { 
     @Override 
     public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) { 
      // Need to also call the original insets since we have overridden the original             
      // https://developer.android.com/reference/android/view/View.OnApplyWindowInsetsListener.html         
      stub.onApplyWindowInsets(windowInsets); 

      // this is where you would check the WindowInsets for isRound() 

      return windowInsets; 
     } 
    }); 

I Fälle sehen, wo Die Leute vergessen, die windowInsets zurückzugeben, oder vergessen, stub.onApplyWindowInsets() aufzurufen. Dies hat den Effekt, anstelle eines runden Layouts ein quadratisches Layout zu geben.

Außerdem gab es einen Fehler mit dem im SDK integrierten AndroidWearRound-Emulator. Es gab drei von ihnen, und wenn Sie die falsche erstellt haben, würde es tatsächlich einen quadratischen Emulator erstellen. Stellen Sie sicher, wenn Sie drei Emulatoren haben, wählen Sie die Sekunde eins. Dieser Fehler wurde in den neuesten Android SDK Tools 23.0.4 behoben, aber möglicherweise haben Sie eine ältere Version.

Können Sie uns den Code zeigen, den Sie um den WatchViewStub machen?

0

Eine einfache Lösung besteht darin, den Wear Round-Emulator auf die API-Stufe 22 zu aktualisieren, die jetzt verfügbar ist. Ich habe im Allgemeinen den Wear Round-Emulator auf API Level 21 gefunden, um Buggy-Verhalten zu haben, während bisher keine Probleme mit dem Round-Emulator auf API-Level 22 gefunden wurden. Ich denke, das wird das Problem beheben, da ich das gleiche Problem hatte ich irgendwann (und es war kein Setup-Problem des Emulators).