AndroidレイアウトパラメータオブジェクトLayoutParamの使用

5011 ワード

コードの中でコンポーネントの広い属性を動的に変更して、私たちのニーズを満たす必要がある場合があります.例えば、appの各インタフェースはネットワークを要求した後に空のデータを取得します.このとき、私たちは対応するレイアウトを表示しますが、異なる空のレイアウトを表示するには、親レイアウトに簡単に書くことはできません.サブクラスが自分で実現する必要があります.
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レイアウトパラメータです.