小さいデバイスのレイアウトが変更されたときにactionBarを無効にしたいが、その方法を知らない。おそらくやりますかAndroidのレイアウトに基づいてアクションバーを非表示にする方法
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
レイアウトを確認するにはどうすればよいですか?
小さいデバイスのレイアウトが変更されたときにactionBarを無効にしたいが、その方法を知らない。おそらくやりますかAndroidのレイアウトに基づいてアクションバーを非表示にする方法
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
レイアウトを確認するにはどうすればよいですか?
単純に、この例を使用して画面のサイズを取得し、必要に応じてActionBar
を非表示にすることができます。
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels/dm.xdpi,2);
double y = Math.pow(dm.heightPixels/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);
インチの画面サイズが表示されます。あなたはピクセル単位でそれをしたい場合は、その後、あなたは
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
はそれが
おそらくあなたの最善のアプローチは、解像度のあなたのstyle.xmlのコピーを作ることですがお役に立てば幸い使用することができます/ RES /値 - の値mdpi(またはあなたの望むレイアウトサイズ)を変更し、AppThemeをスタイル+ .NoActionBarに変更します。
例:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
あなたがロードされたレイアウトをチェックしたい場合は、たとえば、あなたのレイアウトにタグを追加することができます
LDPIレイアウト:
<RelativeLayout
android:width="match_parent"
android:height="match_parent"
android:id="@+id/mainlayout"
android:tag="ldpi" >
MDPIレイアウト:
<RelativeLayout
android:width="match_parent"
android:height="match_parent"
android:id="@+id/mainlayout"
android:tag="mdpi" >
など。あなたは今どのタグのレイアウトを確認することができ、あなたのプログラムコードで
は持っている:
RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainlayout);
String tag = layout.getTag();
if(tag != null && tag.equals("ldpi")) {
// Ldpi Layout loaded, hide actionbar
}
このような状況では多くのオプションがあります。
まず、アクションバーなしでアプリケーションを使用できることを確認してください。例えばなぜあなたは大きなデバイスにアクションバーを必要としますか?
あなたはAndroid Toolbar(私はお勧めします)を使用していますか?その場合は、レイアウトxmlファイルの小さい画面のレイアウトにツールバーを含めないことを選択できます。例えばlayout-large
ディレクトリにツールバーを含め、それをlayout-small
から除外します。次に、あなたのアクティビティ/フラグメント内のビューをバインドすると、ツールバービューが見つからない場合が処理されます。
Toolbar toolbar = (Toolbar)findViewById(R.id.myToolbar);
if(toolbar != null) {
//set up my toolbar here which might include
setSupportActionBar(toolbar);
}
別のオプションは、サイズの異なる画面に複数のスタイルを使用することです。どこであなたのスタイルがTheme.AppCompat.Light.DarkActionBar
ある大画面のためにとあなたの小さな画面のためにそのTheme.AppCompat.Light.NoActionBar
使用DisplayMetrics
public void setAppInvisible() {
actionBar.setVisibility(View.INVISIBLE);
// Or actionBar.hide();
}
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
if(screenWidth < 500){
setAppInvisible();
}