Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式将RelativeLayout toRightOf更改为toLeftOf_Android_Android Relativelayout - Fatal编程技术网

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);
}

尝试从任何视图中删除toRightOftoLeftOf属性。我正在从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);