2017-01-12 7 views
0

私はBoxInsetLayoutの内側のLinearLayoutを使用してラウンド顔用& 重心を持つために必要なのですが平方顔用を残しました。BoxInsetLayout内でラウンド&スクエアウォッチのビューに異なるスタイルを適用するにはどうすればよいですか?

WatchViewStubでは可能ですが、BoxInsetLayoutを使用する必要があります。

このように、各顔に2種類のスタイルを適用する方法はありますか?

+1

おそらく、修飾されたディレクトリに2つのレイアウトを作る方がよいでしょう(例えば 'layout-round'や' layout-notround')。共通の内容は、両方で ''にすることができます。 – Karakuri

+0

@ KarakuriこれはAPI 23で両方のレイアウトが追加されました。下位バージョンのための方法はありますか? –

+0

[ウォッチフェイスの作成](https://developer.android.com/training/wearables/watch-faces/index.html)のドキュメントを確認したい場合は、Android 4.3(APIレベル18)以降でハンドヘルドデバイスとウェアラブルデバイスのAndroid 5.0(APIレベル21)以上。お役に立てれば。 –

答えて

0

画面がラウンド以下を使用している場合は、実行時にチェックすることができます。

private class Engine extends CanvasWatchFaceService.Engine { 
    boolean mIsRound; 

    @Override 
    public void onApplyWindowInsets(WindowInsets insets) { 
     super.onApplyWindowInsets(insets); 
     mIsRound = insets.isRound(); 
    } 
    ... 
} 

これはCreating Watch Faces開発者ガイドに記載されています。 WindowInsets.isRound()がAPI 20で追加されたので、これが利用可能になるはずです。この値に基づいて、コンテンツの適切な重力を設定することができます。

+0

ええ、それは方法です。しかし、私たちがもっと多くの意見を持っているなら、時間の複雑さが増すと思います。 Googleがサポートライブラリにそのようなソリューションを提供すれば、それは良いでしょう。 –

+0

機能リクエストhttps://code.google.com/p/android/issues/detail?id=232122&thanks=232122&ts=1484288818を追加しました。 –

+0

@SanketKachhelaリソースの設定修飾子をバックポートする方法は実際にありません。サポートライブラリに何か追加されることはないでしょうか。 – Karakuri

関連する問題