チャットでメッセージを表示するためのリストビューがあります。受信したメッセージを左側に、送信したメッセージを右側に表示したいと思います。エントリの背景を表示する必要があり、背景も位置合わせする必要があるため、含まれているビューを位置合わせするだけでは不十分であると考えてください。したがって、エントリ全体を揃える必要があります。
それを行う方法はありますか?
使ってみましandroid:layout_gravity="right"
たがうまくいきませんでした。
私はそれを使用してそれを行うことができました:
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が得られます。
もちろん!アダプターが必要です。アダプターでは、ListItemを膨らませるときに、送受信されたメッセージのさまざまなアイテムを膨らませるだけです。
を使用して、アダプタでプログラムでパラメータを設定してみることができます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);
受信したメッセージの場合はその逆(右から左に変更)。