2016-12-09 5 views
0

通常、高さはAppBarLayoutと定義されています。dpxmlレイアウトです。例えば;材料比率キーラインに従ってAppBarLayoutの高さを動的に定義する方法

<android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/detail_backdrop_height" /> 

私はガイドラインGoogle material designについての詳細を学ぶとき、私は徐々にそれが絶対比以下の画像のようにAppBarLayoutの幅と高さ(寸法)を定義してい理解しています。

これらアスペクト比に従うには、AppBarLayoutの高さは、物理的なモバイルデバイスの異なる画面幅に応じて変更されなければなりません。

したがって、私は動的AppBarLayoutの高さを定義する方法を知りたいと私は、これらの比率定義ロジックを定義する場所(私はここでcallback方法Activity Javaクラスの平均します)。

Keyline Matrics for AppBarLayout

+0

私も同じ種類の問題に直面していました。あなたの画面サイズに合わせて高さと幅を定義することをお勧めします。あなたの現在の画面では、画面上部と中央部のカバーの50%をカバー20%とし、フッタ部がその30%をカバーしていると仮定すると、それぞれの画面ごとに高さと幅を作成し、それに応じて設定できます。これを試してみてください。 –

答えて

3

あなたが式の下に使用してコード

DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int width = displaymetrics.widthPixels;

計算アプリバーのレイアウトの高さの下に使用して画面の幅と高さを取得することができます

int appbar_height = width/1.5; 

は、アプリケーションバーの高さを設定しましたを使用します。

AppBarLayout.LayoutParams layoutParams=new AppBarLayout.LayoutParams(AppBarLayout.LayoutParams.MATCH_PARENT,appbar_height); 
AppBarLayout appBarLayout = (AppBarLayout) rootView.findViewById(R.id.appbar); 
appBarLayout.setLayoutParams(params); 
関連する問題