Googleデザインアプリバーのガイドラインで、高さを伸ばしたアプリバーを見てきました。これらをAndroid Lollipopに実装するにはどうすればよいですか?
回答:
これを実現するには、新しいツールバーウィジェットを使用する必要があります。ツールバーには、ボタン(およびアクション)に使用されるスペースの量を宣言するための最小の高さのための特別な処理があります。
以下の例では、高さを128dp(仕様で定義されているように56dp + 72dp)に設定していますがandroid:minHeight
、を標準actionBarSize
(通常は56dp)に維持しています。つまり、ボタンとアクションは上部の56 dpに垂直に配置されるように制限されています。次に、を使用android:gravity
してタイトルを下部に配置できます。
<Toolbar
android:id="@+id/toolbar"
android:layout_height="128dp"
android:layout_width="match_parent"
android:minHeight="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"
android:gravity="bottom" />
AppCompatを使用している場合は、android.support.v7.widget.Toolbar
代わりに使用するように宣言を変更し、その属性を使用します。
@dimen/action_bar_size_x2
、電話では112 dp、タブレットでは128 dpを使用します
android:paddingBottom
にbuttonGravity
設定すると、奇妙な間隔が導入されbottom
ます。titleMarginBottom
属性はありません、ここではより良いオプションのように思えますか?
あなたの質問、その答え、そしてネイティブとサポートライブラリのツールバーの実装をありがとう:)
そして、もっと遊ぶことができます。実行時に、HeightとMinimalHeightを操作できます。
高さはツールバーの高さで、シンプルで、すべての人が理解し、重力はその高さに応じて作用します。
minimalHeightはよりトリッキーであり、56dp以上にすることはできません。このminHeightは、menuItemの行を配置するために使用されます。この線は、minHeightの中間にあります。
したがって、このコードをアクティビティに追加して、違いを自分で確認できます。:)
Runnable toolBarAnimator=new Runnable() {
@Override
public void run() {
if(postICS){
// toolbar.setTranslationX(iteration);
// toolbar.setElevation(iteration);
toolbar.setMinimumHeight(iteration * 5);
toolbar.getLayoutParams().height++;
}
uiThreadHanlder.postDelayed(this,16);
iteration++;
if(iteration>150)iteration=0;
}
};
Handler uiThreadHanlder=new Handler();
int iteration=0;
@Override
protected void onResume() {
super.onResume();
//launch the animation
uiThreadHanlder.postDelayed(toolBarAnimator, 1000);
}
@Override
protected void onPause() {
super.onPause();
//stop the animation
uiThreadHanlder.removeCallbacks(toolBarAnimator);
}
ツールバーの場所:
toolbar =(ツールバー)findViewById(R.id.toolbar);
これを行うと、以下が得られます。
ただし、アニメーションを終了すると、次のようになります。
これがツールバーのandroid:layout_heightをwrap_contentに設定することが、ほとんどの場合に適切なオプションである理由です。これは、ツールバーがコンテンツに応じて高さを調整するためです(実行時にコンテンツを変更できます:)。
これは、実行時にツールバーのサイズを変更する方法でもあります。
アクションバーで素晴らしい仕事をしてくれたChris Banesに感謝します。
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
layout_height
する方法がある場合、ここでモンスーンによって説明されている回避策も回避策ではありませんが、適切な方法ですか?code.google.com/p/android/issues/detail?id=77874