Android 以编程方式将RelativeLayout toRightOf更改为toLeftOf
我正在制作聊天应用程序。我想把时间戳放在聊天泡泡旁边。消息将左对齐(用于接收)和右对齐(用于发送) 因此,我正在寻找一种将Android 以编程方式将RelativeLayout toRightOf更改为toLeftOf,android,android-relativelayout,Android,Android Relativelayout,我正在制作聊天应用程序。我想把时间戳放在聊天泡泡旁边。消息将左对齐(用于接收)和右对齐(用于发送) 因此,我正在寻找一种将toLeftOf更改为toRightOf的方法。目前,情况如下: 下面是我的每条消息的XML代码(我有ArrayAdapter来处理这个问题) 有解决办法吗?谢谢重写 从当前文本视图中删除属性layout\u toRightOf,然后创建两个不同的LayoutParams:一个用于toRightOf,另一个用于toLeftOf。您可以根据需要切换参数 另一种方法是使用具有两
toLeftOf
更改为toRightOf
的方法。目前,情况如下:
下面是我的每条消息的XML代码(我有ArrayAdapter
来处理这个问题)
有解决办法吗?谢谢重写
从当前文本视图中删除属性
layout\u toRightOf
,然后创建两个不同的LayoutParams:一个用于toRightOf
,另一个用于toLeftOf
。您可以根据需要切换参数
另一种方法是使用具有两种布局的自定义适配器。这种方法应该更快,因为您不是在运行时重新安排布局,而是在视图回收器中维护两个单独的“回复”和“发送”布局列表
(需要注意的是,API 17已经引入,但目前还没有帮助。)请使用下面的代码
RelativeLayout wrapper = (RelativeLayout) findViewById(R.id.wrapper);
if(isReceivedMessage){
wrapper.setGravity(Gravity.RIGHT);
}
else{
wrapper.setGravity(Gravity.LEFT);
}
尝试从任何视图中删除toRightOf和toLeftOf属性。我正在从textview中删除这些属性
TextView header2=(TextView) findViewById(R.id.text_view_header_shoppinglist);
RelativeLayout.LayoutParams mLayoutParams2=(RelativeLayout.LayoutParams)header2.getLayoutParams();
mLayoutParams2.addRule(RelativeLayout.LEFT_OF,0);
mLayoutParams2.addRule(RelativeLayout.RIGHT_OF,0);
那个代码是用来对齐聊天泡泡的,对吗?我已经这样做了,实际上我正在寻找一种改变时间戳位置的方法。我已经有了对齐泡泡的代码,请删除上面您发布的所有规则。只要把我的代码显示为你的形象。把我的密码放进去。左右对齐。我似乎找不到
removule()
方法。那是内置的还是我们必须先做?对不起,只是。。。这对当前的设备没有帮助。但是我仍然相信多重布局方法是最好的。等等,你试过使用两种不同的布局参数吗?并使用tv.setLayoutParams(leftParams)
切换它们?是的,多布局听起来很简单,如果我找不到任何方法,我将使用它作为最后手段。谢谢如果您需要了解如何在自定义适配器中使用多个布局,请询问是否需要更具体的建议。谢谢。我已经用上面的答案解决了这个问题,但下次我会试试这个
RelativeLayout wrapper = (RelativeLayout) findViewById(R.id.wrapper);
if(isReceivedMessage){
wrapper.setGravity(Gravity.RIGHT);
}
else{
wrapper.setGravity(Gravity.LEFT);
}
TextView header2=(TextView) findViewById(R.id.text_view_header_shoppinglist);
RelativeLayout.LayoutParams mLayoutParams2=(RelativeLayout.LayoutParams)header2.getLayoutParams();
mLayoutParams2.addRule(RelativeLayout.LEFT_OF,0);
mLayoutParams2.addRule(RelativeLayout.RIGHT_OF,0);