0

私はこれについて少し混乱しています。ユーザーが長方形のテキスト オブジェクトを描画するアプリがあります。XML の相対レイアウトにいくつかのテキストビューを追加しました (最大 3 つのテキスト オブジェクトがあるとしましょう)。オブジェクトは移動およびサイズ変更できます。各 textView にこのコードを追加しました

TextView tv=(TextView) findViewById(R.id.text1);            
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
System.out.println(texts.get(i).Sx+ " , "+texts.get(i).Sy+ " , "+ texts.get(i).Lx+ " , "+texts.get(i).Ly);
if(texts.get(i).Sx<=texts.get(i).Lx){
    if(texts.get(i).Sy<=texts.get(i).Ly){                       
        lp.setMargins((int)texts.get(i).Sx, (int)texts.get(i).Sy, (int)texts.get(i).Lx, (int)texts.get(i).Ly);
    } else{
        lp.setMargins((int)texts.get(i).Sx, (int)texts.get(i).Ly, (int)texts.get(i).Lx, (int)texts.get(i).Sy);
    }
} else{
    if(texts.get(i).Sy<=texts.get(i).Ly){
        lp.setMargins((int)texts.get(i).Lx, (int)texts.get(i).Sy, (int)texts.get(i).Sx, (int)texts.get(i).Ly);
    } else{
        lp.setMargins((int)texts.get(i).Lx, (int)texts.get(i).Ly, (int)texts.get(i).Sx, (int)texts.get(i).Sy);
    }
}           
tv.setLayoutParams(lp);
tv.setWidth((int)(texts.get(i).width));
tv.setHeight((int)(texts.get(i).height));
tv.setTextSize(texts.get(i).textSize);
tv.setText(text.text);
tv.setTextColor(Color.WHITE);
tv.requestLayout();

Sx、Sy はピクセル単位のオブジェクトの開始 coos で、Lx、Ly は終了 coos です。

xml でこれを追加しました:

<RelativeLayout 
    android:layout_height="fill_parent"
    android:layout_width="fill_parent" 
    android:id="@+id/texts" >

    <TextView 
        android:layout_height="fill_parent"
        android:layout_width="fill_parent" 
        android:id="@+id/text1" />

    <TextView 
        android:layout_height="fill_parent"
        android:layout_width="fill_parent" 
        android:id="@+id/text2" />

    <TextView 
        android:layout_height="fill_parent"
        android:layout_width="fill_parent" 
        android:id="@+id/text3" />              

</RelativeLayout>

これは、テキストを適切な場所に配置する場合と同様に機能するようです。しかし、テキストビューの幅と高さが正しくないようです。これは余白をピクセル単位で設定する際の問題ですか? いくつかの啓蒙は今非常に役立つでしょう

4

2 に答える 2

0

LayoutParams は、ビューを動的に整列するために使用されます。below、above、bottom、top、align、margin、およびすべてのようなルールをパラメーターに追加して (xml を使用する場合と同じ)、最後にこのレイアウト パラメーターをビューに設定できます。例:

    // Set the params eg. for a button.

    RelativeLayout.LayoutParams button_params = new RelativeLayout.LayoutParams(RelativeLayout
        .LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

    button_params.addRule(RelativeLayout.LEFT_OF,
                          any_view.getId());
    button_params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,
                          RelativeLayout.TRUE);
    button_params.bottomMargin = screen_height / 15;
    button_params.rightMargin = 20;
    button.setLayoutParams(button_params);
于 2012-06-26T08:35:05.387 に答える
0

最初に width/height を FILL_PARENT に設定してから、それを px で上書きしますか?

このようなことを試してください

View temp = this.findViewById(recent);
RelativeLayout.LayoutParams relativeParams = (LayoutParams) temp.getLayoutParams();

relativeParams.setMargins(0, 0, 0, 50); // llp.setMargins(left, top, right, bottom);
relativeParams.width = 123;
relativeParams.height = 123;
temp.setLayoutParams(relativeParams);
于 2012-06-26T08:45:59.970 に答える