


Google のオープンソース Android レイアウト ライブラリ: FlexboxLayout_html/css_WEB-ITnose
最近、Google は「FlexboxLayout」と呼ばれるプロジェクトをオープンソース化しました。
1. Flexbox とは
簡単に言うと、Flexbox は Web フロントエンド分野における CSS のレイアウト スキームで、2009 年に W3C によって提案された、さまざまなページを簡単、完全、レスポンシブに実装できる新しいレイアウト スキームです。レイアウト、React Native も Flex レイアウトを使用します。
Flexbox は CSS 分野の Linearlayout に似たレイアウトですが、Linearlayout よりもはるかに強力であることを簡単に理解できます。
2.FlexboxLayoutとは何ですか?
先ほど、Flexbox は CSS 分野で比較的強力なレイアウトであると述べましたが、Android 開発では基本的に Linearlayout + RelativeLayout を使用してほとんどの複雑なレイアウトを実装できますが、Google は Flexbox に似たレイアウトはあるのかと疑問に思っていました。これを利用すると、1 つのレイアウトでさまざまな複雑な状況に対応できるということで、FlexboxLayout が登場しました。
FlexboxLayout は、Flexbox に似たレイアウト スキームを実装する Android プラットフォーム用のオープンソース プロジェクトです。 オープンソース アドレス: https://github.com/google/flexbox-layout
3. 使用方法
方法使用方法は非常に簡単です。次の依存関係を追加する必要があります:
compile 'com.google.android:flexbox:0.1.2'
<com.google.android.flexbox.FlexboxLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" app:flexWrap="wrap" app:alignItems="stretch" app:alignContent="stretch" > <TextView android:id="@+id/textview1" android:layout_width="120dp" android:layout_height="80dp" app:layout_flexBasisPercent="50%" /> <TextView android:id="@+id/textview2" android:layout_width="80dp" android:layout_height="80dp" app:layout_alignSelf="center" /> <TextView android:id="@+id/textview3" android:layout_width="160dp" android:layout_height="80dp" app:layout_alignSelf="flex_end" /></com.google.android.flexbox.FlexboxLayout>
FlexboxLayout flexboxLayout = (FlexboxLayout) findViewById(R.id.flexbox_layout);flexboxLayout.setFlexDirection(FlexboxLayout.FLEX_DIRECTION_COLUMN);View view = flexboxLayout.getChildAt(0);FlexboxLayout.LayoutParams lp = (FlexboxLayout.LayoutParams) view.getLayoutParams();lp.order = -1;lp.flexGrow = 2;view.setLayoutParams(lp);
4. サポートされているプロパティ
flexDirection
flexDirection プロパティは、主軸の方向 (つまり、項目の配置方向) を決定します。 LinearLayout の垂直方向と水平方向に似ています。
4 つの値から選択できます:
- row (デフォルト値): 主軸は水平で、開始点は左端にあります。
- row-reverse: 主軸は水平であり、開始点は右端にあります。
- 列: 主軸は垂直であり、始点は上端にあります。
- column-reverse: 主軸は垂直であり、開始点は下端にあります。
デフォルトでは、Flex には LinearLayout と同様に行の折り返しがありませんが、flexWrap 属性は行の折り返しをサポートできます。 3 つの値があります:
- nowrap: 行の折り返しなし
- wrap: 行を通常方向に折り返し
- wrap-reverse: 行を逆方向に折り返し
justifyContent属性は主軸上の項目を定義します。
- flex-start (デフォルト): 左揃え
-
-
-
-
-
flex-start: 交差軸の開始点を揃えます。
alignContent プロパティは、複数の軸の配置を定義します。プロジェクトに軸が 1 つしかない場合、このプロパティは効果がありません。
flex-start: 交差軸の開始点に位置合わせします。
layout_order
デフォルトでは、サブ要素はドキュメントフローの順序で配置され、order 属性は負の値が最初に来て、正の値が後に来るように配置することができます。小さいものから大きいものまで注文してください。 FlexboxLayout が LinearLayout よりも強力である理由は、いくつかのプロパティがより強力であるためであり、順序もその 1 つであるためです。
layout_flexGrow
layout_flexGrow 属性は項目の拡大率を定義します。デフォルトは 0、つまり、残りのスペースがある場合は拡大されません。理解できる絵。 LinearLayout の Weight 属性と同じです。
すべての項目のlayout_flexGrowプロパティが1の場合、残りのスペース(ある場合)を均等に分割します。 1 つの項目のlayout_flexGrow 属性が 2 で、他の項目がすべて 1 の場合、前者は他の項目の 2 倍の残りスペースを占有します。
layout_flexShrink
layout_flexShrink この属性は項目の縮小率を定義します。デフォルトは 1 です。つまり、スペースが不十分な場合、項目は縮小します。
すべての項目のlayout_flexShrink属性が1の場合、スペースが足りない場合、すべての項目が比例して縮小されます。 1 つの項目の flex-shrink プロパティが 0 で、他の項目が 1 の場合、スペースが不十分な場合、前者は縮小されません。
この属性には負の値は無効です。
layout_alignSelf
layout_alignSelf 属性を使用すると、単一の子要素を他の子要素とは異なる方法で配置でき、alignItems 属性をオーバーライドできます。デフォルト値は auto で、親要素がない場合は、親要素の alignItems 属性を継承します。
-
auto (デフォルト)
-
flex_start
-
flex_end
-
center
-
ベースライン
-
stretch
この属性は、auto を除く 6 つの値を取ることができ、その他はすべてそのとおりですalign-items 属性と同じ。
layout_flexBasisPercent
layout_flexBasisPercent 属性は、追加スペースを割り当てる前に、子要素が占める主軸スペースのメイン サイズを定義します。ブラウザは、この属性に基づいて主軸に追加スペースがあるかどうかを計算します。デフォルト値は auto で、これは子要素の元のサイズです。
6. 相違点
CSS の従来の Flexbox レイアウトとの相違点は次のとおりです:
1. flex-flow 属性がありません
3.layout_flexBasisPercent 属性は CSS の flexbox です。 flexBasis 属性
4. min-width と min-height の 2 つの属性はサポートされていません
上記は、FlexboxLayout の基本的な紹介と基本的な使用法です。このプロジェクト自体も優れたカスタム ビューであることを皆さんに思い出していただく価値があります。学習教材は学ぶ価値があります。
参考:
この記事の Flexbox に関する知識の多くは、当社の同僚によるこの記事を参照しています。Flexbox 関連の知識について詳しく知りたい場合は、こちらをお読みください:
http://w4lle.github.io/ 2016 /05/08/Flexbox/
出典: WeChat パブリック プラットフォーム AndroidDeveloper

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします
