画面サイズとデバイスごとに異なるレイアウトを使用しています。特定のレイアウトフォルダでフラグメントを使用しています。コンセプトは素晴らしいです。大画面のタブレットやデバイスの場合、レイアウトファイルを layout-sw600dpに配置すると、Androidはさまざまなデバイスで適切なレイアウトを提供できます。
バグとは:コード内で使用されているレイアウトを確認するにはどうすればよいですか。私のフラグメントは、レイアウトごとにわずかに異なるコードを必要とします。
一般に、フラグメント/アクティビティ内でカスタムレイアウトプログラミングロジックを分離するためのベストプラクティスは何ですか?
私のアプローチは今やちょっとハッキーで、別のレイアウトフォルダと同期していません。
private boolean isTabletDevice() {
if (android.os.Build.VERSION.SDK_INT >= 11) { // honeycomb
// test screen size, use reflection because isLayoutSizeAtLeast is
// only available since 11
Configuration con = getResources().getConfiguration();
try {
Method mIsLayoutSizeAtLeast = con.getClass().getMethod("isLayoutSizeAtLeast", int.class);
Boolean r = (Boolean) mIsLayoutSizeAtLeast.invoke(con, 0x00000004); // Configuration.SCREENLAYOUT_SIZE_XLARGE
return r;
} catch (Exception x) {
x.printStackTrace();
return false;
}
}
return false;
}
その後
if(isTabletDevice()) {
//findViewById(R.id.onlyInTabletLayoutButton);
}else{
//
}