Xmlレイアウトによくある問題まとめ
5945 ワード
また週末になり、一日ぶらぶらしてやっと静かになりました.引き続き総括項目に問題があります.ツッコミを入れてください.騎行の仲間からよく言われています.騎行の列に入ると、たとえ坑に入ったとしても、タイヤの準備、空気入れ、ホイールのアップグレードなどです.自転車に関するものがあります.実はこのコンピュータはピットとは言えません.特にコンピュータこそ最大のピットです.様々な技術は必要ないと言っても、全部精通しています.でも、何でも聞いたことがあります.RxJava、RxAndroid、FlatBures、OkHttp、KtLin….枚挙に暇がないです.とにかく、無力感があります.デブを食べたいという気持ちもあります.しかし、これは不可能であり、現実的ではなく、自分の心をやつれてしまうこともあるだろう.これからも中小の開発パートナーの出現する問題点を羅列し続け、一日少しずつ進歩していく.
1)誤用されたView Group
View Groupとは何ですか?このTMDの問題は、Android Monkeyが全部知っています.はい、View GroupはGroup Viewに使われています.いくつかのビューをレイアウトするために使われています.しかし、パートナーのxmlレイアウトファイルには、(私が14年に初めてandroidを勉強した時もこの問題を犯したことがあります)こんなコードがあります.
2)忘れられたImageViewのbackground属性
この問題のレイアウトは第一点で誤用されたView Groupに似ていますが、これが誤用されたのはView Groupではなく、ImageViewです.レイアウトコードは以下の通りです.
3)忘れられたandroid:drawable Leftなどの属性
UI設計の時、文字の左側か右側に小さなアイコンが展示されています.このようなUIはTextViewのandroid:drawable Left、android:drawable Rightなどで完全に解決できます.しかし、この属性を無視したり、忘れたりして、次のようにxmlのレイアウトを書きます.
1)誤用されたView Group
View Groupとは何ですか?このTMDの問題は、Android Monkeyが全部知っています.はい、View GroupはGroup Viewに使われています.いくつかのビューをレイアウトするために使われています.しかし、パートナーのxmlレイアウトファイルには、(私が14年に初めてandroidを勉強した時もこの問題を犯したことがあります)こんなコードがあります.
"wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="xxx"
android:layout_marginRight="yyy"
android:layout_marginTop="zzzzz"
>
...
/>
上のレイアウトは簡単です.RelativeLayoutレイアウトはImageViewを包んでいます.しかもこの一つのImageViewというchildViewしかありません.しかし、このRelativeLayoutというView Groupを使っているのは、そのmaging Left、margingRightなどの属性だけで、中にあるImageViewの表示位置を制御しているからです!!これは間違いなくlowのレイアウトです.RelativeLayoutはまったくその応用の責任を発揮していません.また、xmlは解析時にこの不要な入れ子により一部の性能とオーバーヘッドに影響を与えます.このように、性能の最適化は点滴の間にあるので、code reviewの結果はもちろんRelativeLayoutを直接切ってしまうことです.2)忘れられたImageViewのbackground属性
この問題のレイアウトは第一点で誤用されたView Groupに似ていますが、これが誤用されたのはView Groupではなく、ImageViewです.レイアウトコードは以下の通りです.
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="your drawable"
>
<ImageView
android:src="you image"
/>
RelativeLayout>
このレイアウトの意図は、ImageViewの背景画像を設定するので、ImageViewの外側にView Groupをセットします.実は全く必要ないです.アンディのView設定クラスではもともとbackgroundの属性が提供されています.ましてImageViewというViewのサブクラスですから、直接code reviewの時にこのコードを最適化します.<ImageView
android:src="you image"
android:background="your background drawable"
/>
実はこのbackground属性は、TV端末での応用にも大きな誤用があり、不必要なView Groupアプリケーションの場合もあります.アプリケーションシーン:TV端のAndroidアプリケーションはリモコンで制御されているので、focusable=trueのViewはUI設計時に選択されたフォーカスフレームを設計しています.選択されたViewはオンロック操作ができることを示しています.ここでButtonを例にして、code reviewの時に次のような問題点が発見されました.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/your_selector" >
<Button
....
/>
LinearLayout>
Buttonの外を見てください.またLineear LayoutというView Groupはbackround属性を設定してButtonの選択効果に選択枠を追加します.これは明らかにこのbackgroundをButtonというコントロールの上に置くことができます.最適化されたレイアウトコードは書き込みしなくてもいいです.3)忘れられたandroid:drawable Leftなどの属性
UI設計の時、文字の左側か右側に小さなアイコンが展示されています.このようなUIはTextViewのandroid:drawable Left、android:drawable Rightなどで完全に解決できます.しかし、この属性を無視したり、忘れたりして、次のようにxmlのレイアウトを書きます.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:src="image"
/>
<TextView
....
/>
LinearLayout>
上のレイアウトはandroid:drawable Left属性を使っています.xmlレイアウトは以下のコードに完全に簡略化できます.<TextView
android:drawableLeft="image"
android:text="some text" />
現在発見された問題はこのように多く、総じて上のいくつかの問題は一つの種類にまとめることができます.viewの一部の属性については不案内またはうっかり忘れてしまい、xmlレイアウトファイルが不必要なView Groupレイアウトを追加しました.これらはxmlレイアウトの中で最適化できるところです.ここでブログを開設して、専門的に記録してもいいです.これから自分を目覚めさせます.開発する時に、xmlレイアウトは必要でない入れ子が少ないです.このブログは継続的に更新されます.まだ未完の状態です.今後はレイアウトに関する他の問題を発見すると思います.批判の指摘を歓迎して、共に学習して高めます.