AndroidレイアウトパラメータオブジェクトLayoutParamの使用
5011 ワード
コードの中でコンポーネントの広い属性を動的に変更して、私たちのニーズを満たす必要がある場合があります.例えば、appの各インタフェースはネットワークを要求した後に空のデータを取得します.このとき、私たちは対応するレイアウトを表示しますが、異なる空のレイアウトを表示するには、親レイアウトに簡単に書くことはできません.サブクラスが自分で実現する必要があります.
1.第1のケース:既存のレイアウトファイルのコンポーネントの幅を変更するには、まず栗を挙げます.
レイアウトファイル:
findがframlayoutであれば、あるレイアウトをクリアして、自分が追加したいレイアウトを追加すればいいのです.framlayoutには2つの方法があり、1つはすべてのviewを削除することであり、1つは指定したviewを削除することである.
2コードのnewはコンポーネントを出して幅を設定します
note: FrameLayout.LayoutParams params = new FrameLayout.LayoutParams (FrameLayout.LayoutParams.MATCH_PARENT,FrameLayout.LayoutParams.MATCH_PARENT);このコードはnewを始めたときはそうではありませんが、なぜFrameLayout制約を使うのでしょうか.これは、レイアウトパラメータオブジェクトを取得するときに、このコンポーネントの前の親コンポーネントに基づいて取得するためです.いつnewになるか、いつnewしないのか.このコンポーネントがレイアウトファイルから取得するかどうかによって、そうであればviewです.getLayoutParam、いいえnewレイアウトパラメータです.
1.第1のケース:既存のレイアウトファイルのコンポーネントの幅を変更するには、まず栗を挙げます.
TextView tv = (TextView) findViewById(R.id.tv);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) tv.getLayoutParams();
params.height = 100;
params.width = 100;
tv.setLayoutParams(params);
レイアウトファイル:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="cn.xianzaishi.rxjava.MainActivity">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="#ff4400"
android:text="Hello World!" />
RelativeLayout>
findがframlayoutであれば、あるレイアウトをクリアして、自分が追加したいレイアウトを追加すればいいのです.framlayoutには2つの方法があり、1つはすべてのviewを削除することであり、1つは指定したviewを削除することである.
2コードのnewはコンポーネントを出して幅を設定します
framlayout ;
ImageView imageView = new ImageView(getApplicationContext());
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
FrameLayout.LayoutParams params = new FrameLayout.LayoutPar (FrameLayout.LayoutParams.MATCH_PARENT,FrameLayout.LayoutParams.MATCH_PARENT);
imageView.setLayoutParams(params);
imageView.setImageResource(R.mipmap.guide1);
imageView.setVisibility(View.VISIBLE);
flContainer.addView(imageView);e
note: FrameLayout.LayoutParams params = new FrameLayout.LayoutParams (FrameLayout.LayoutParams.MATCH_PARENT,FrameLayout.LayoutParams.MATCH_PARENT);このコードはnewを始めたときはそうではありませんが、なぜFrameLayout制約を使うのでしょうか.これは、レイアウトパラメータオブジェクトを取得するときに、このコンポーネントの前の親コンポーネントに基づいて取得するためです.いつnewになるか、いつnewしないのか.このコンポーネントがレイアウトファイルから取得するかどうかによって、そうであればviewです.getLayoutParam、いいえnewレイアウトパラメータです.