blog

LayoutParamsを使って動的にビューのサイズをエレガントに変更するには?

コード:コード分析:ここでは、サイズを変更したいビューがどのレイアウトにあるかを知る必要があります。ここでSurfac...

Feb 11, 2020 · 2 min. read
シェア
xml :
<RelativeLayout 
 android:id="@+id/frame" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:background="#" > 
 <SurfaceView 
 android:id="@+id/video_surface" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent"/> 
</RelativeLayout>

コード

RelativeLayout.LayoutParams layoutParams=new RelativeLayout.LayoutParams();
videoSurface.setLayoutParams(layoutParams);
コード分析:
ここでは、サイズを変更したいビューのレイアウトを知る必要があります。
ビューのサイズを制御するために、異なる幅と高さのパラメータを渡す/変更することができます。

最適化

LayoutParamsの型が正しくない場合、プログラムは例外をスローし、そのたびにレイアウトにアクセスして対応する親レイアウトを探し、対応するLayoutParamsオブジェクトを生成しなければなりません。

最適化:リフレクションを使用して、ビューに対応するLayoutParamsオブジェクトを生成します。

LayoutParams のコードを反映します:

Class<? extends ViewGroup.LayoutParams> LayoutParamsClass=videoSurface.getLayoutParams().getClass();
videoSurface.setLayoutParams( LayoutParamsClass.getDeclaredConstructor(int.class,int.class).newInstance());

分析

これは、LayoutParamsをインスタンス化する際に、親ビューのLayoutParamsとの不整合の可能性を回避するためにリフレクションを使用します。

Read next

vue、nuxtはsassを使用する

cssプリプロセッサとしてsassを使用するvueプロジェクトを作成すると、コンポーネントの中で直接sassを使用することができます。 公開sassファイルが必要な場合は、init.sassという公開ファイルを作成し、(存在しない)

Feb 11, 2020 · 1 min read