0

チャットでメッセージを表示するためのリストビューがあります。受信したメッセージを左側に、送信したメッセージを右側に表示したいと思います。エントリの背景を表示する必要があり、背景も位置合わせする必要があるため、含まれているビューを位置合わせするだけでは不十分であると考えてください。したがって、エントリ全体を揃える必要があります。

それを行う方法はありますか?

使ってみましandroid:layout_gravity="right"たがうまくいきませんでした。

4

3 に答える 3

1

私はそれを使用してそれを行うことができました:

    LayoutParams params = (LayoutParams) frame.getLayoutParams();
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, alignRight?0:1);
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT,  alignRight?1:0);
    frame.setLayoutParams(params);

重要なのは、params.addRuleはRelativeLayoutでのみ使用できるため、エントリのRelativeLayout内にフレームを追加する必要があることです。bindViewに渡されたビューで同じことを行おうとすると、addRuleをサポートしない別のLayoutParamが得られます。

于 2012-05-03T12:40:31.437 に答える
0

もちろん!アダプターが必要です。アダプターでは、ListItemを膨らませるときに、送受信されたメッセージのさまざまなアイテムを膨らませるだけです。

于 2012-05-03T11:57:08.853 に答える
0

を使用して、アダプタでプログラムでパラメータを設定してみることができますLayoutParams

送信されたメッセージの場合は次のようになります。

LinearLayout ll = (LinearLayout) findViewById(R.id.MyLinearLayout);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)ll.getLayoutParams(); 
params.gravity = Gravity.RIGHT;
ll.setLayoutParams(params);

受信したメッセージの場合はその逆(右から左に変更)。

于 2012-05-03T12:18:44.363 に答える