2014-09-20 65 views
6

可惜Moto360不利用歐洲尚未...回合Android Wear模擬器使用矩形佈局

我跑一個回合Android Wear模擬器,這是工作的罰款。

然而,當我運行Android Wear活動運行回合模擬器時(它使用WatchViewStub)所使用的佈局是rect_activy_layout而不是圓形佈局

任何人有這個問題還是解決?

謝謝

+0

我實際上面臨着同樣的問題,我的摩托360我很感興趣,知道什麼別人沒有解決這個問題。 – kentarosu 2014-09-21 20:14:25

+0

訂閱這個問題。 作爲一個醜陋的解決方法,你可以暫時設置你的圓形佈局,像這樣: 'app:rectLayout =「@ layout/round_activity_my'」 它會運行你的圓形佈局,認爲它是作爲矩形提供的... – 2014-09-23 10:11:12

+0

I我一直在做這個非常「廉價」的工作。我的代碼對於rect來說都很好,所以在我承諾之後,我只是用圓形佈局樣式代碼覆蓋我的矩形佈局,一旦我很高興,我將我的圓形佈局代碼複製並粘貼到實際的round_layout_activity中,然後還原修改的rect_layout文件。 Blah ... – 2014-09-25 10:21:55

回答

1

有不正確使用WatchViewStub引起的膨脹佈局有很多問題。我沒有看到任何代碼確切地知道,但一個共同的問題是,當你註冊的手錶插圖一個偵聽器,以便您可以檢查它是否是圓的還是方的onApplyWindowInsets處理程序中:

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; 
     } 
    }); 

我看情況人們忘記返回windowInsets,或忘記調用stub.onApplyWindowInsets()。這具有提供方形佈局而不是圓形佈局的效果。

而且,有一個與內置於SDK的AndroidWearRound模擬器中的錯誤。其中有三個,如果你創建了錯誤的,它實際上會創建一個方形模擬器。確保你有三個模擬器,你選擇第二個之一。此錯誤已在最新的Android SDK Tools 23.0.4中修復,但可能是您的版本較舊。

你能告訴我們你周圍的WatchViewStub做的代碼?

0

一個簡單的解決方法是升級穿圓領模擬器API級別22,現在是出來。一般來說,我發現在API級別21的Wear Round模擬器有一些bug的行爲,但到目前爲止還沒有發現在API級別22的Round模擬器有任何問題。我認爲這將解決這個問題,因爲我有同樣的問題我自己在某個時候(這不是模擬器的設置問題)。