2014-09-20 4 views
6

К сожалению Moto360 не воспользоваться в Европе еще ...Round Android Wear Emulator использует Rect макеты

Я бегу Wear Emulator Round Android, и это работает отлично.

Однако, когда я бег моего Android Wear активности (которая использует WatchViewStub) раскладка используется является rect_activy_layout и не круглый макет

Кто-нибудь еще есть эта проблема или решен, когда бегал эмулятор?

Благодаря

+0

Я действительно столкнулся с той же проблемой на своем Moto 360. Мне интересно узнать, что еще кто-то сделал, чтобы решить эту проблему. – kentarosu

+0

подписка на этот вопрос. Как уродливое обходное решение, вы можете временно установить свой круглый макет, как это: 'app: rectLayout =" @ layout/round_activity_my' " И это запустит ваш круглый макет, думая, что он представлен как прямой ... –

+0

I «Мы работаем над этим чрезвычайно« дешево ». Мой код хорош для прямых, поэтому после того, как я это сделал, я просто переписываю свои прямоугольные макеты с помощью кода стиля круглой компоновки, и как только я буду счастлив, я скопирую и вставлю свой код макета круглого стола в фактическую round_layout_activity и верните измененный файл rect_layout. Blah ... –

ответ

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(). Это приводит к созданию квадратной компоновки вместо круглой компоновки.

Также была обнаружена ошибка с эмулятором AndroidWearRound, встроенным в SDK. Их было три, и если вы создали неправильный, это фактически создаст квадратный эмулятор. Убедитесь, что у вас есть три эмулятора, которые вы выбираете второй. Эта ошибка была исправлена ​​в последних версиях Android SDK Tools 23.0.4, но может быть, у вас более старая версия.

Можете ли вы показать нам код, который вы делаете вокруг WatchViewStub?

0

Одним из простых исправлений является обновление эмулятора Wear Round до уровня API 22, который сейчас отсутствует. Я вообще нашел эмулятор Wear Round на уровне API 21, чтобы иметь какое-то ошибочное поведение, пока до сих пор не было проблем с Round-эмулятором на уровне API уровня 22. Я думаю, что это исправит проблему, поскольку у меня была такая же проблема я в какой-то момент (и это не была проблема настройки эмулятора).

Смежные вопросы