我正在尝试在我的应用中创建一个类似聊天的功能,而我正在使用cardview聊天文本。我希望将cardview与屏幕右侧对齐,以便发送消息。但是当我将引力属性设置为cardview的父级时,它适用于所有其他属性,但是cardview不会让步。 Plz告诉我如何将layout_gravity设置为cardview(动态方法将被appriciated)。感谢名单。
这是我的model_msg.xml文件,发送的msgs的设置在适配器类中完成:
import re
output = re.findall('[^\w] ([A-Z]+\\n\\n.+\\n)', text)
print output
答案 0 :(得分:1)
将名片视图包装在LinearLayout中。然后使用LinearLayout上的setGravity(Gravitygravity)设置线性布局的重力,如下所示。请注意,我正在使用RecyclerView重复消息。
message_row_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/message_view">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/message_text_view" />
</android.support.v7.widget.CardView>
</LinearLayout>
UI逻辑:
LinearLayout viewMessage = itemView.findViewById(R.id.message_view);
if (messageList.get(position).getPeerId() == USER_PEER_ID) {
viewMessage.setGravity(LEFT);
} else {
viewMessage.setGravity(RIGHT);
}
注意:
我尝试按照其他答案的指示访问cardview上的CardView的LayoutParams和setForegroundGravity,但是没有运气,所以我实现了它,如上所示。
答案 1 :(得分:0)
尝试这种方式:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
yourCardViewHere.setLayoutParams(params);
答案 2 :(得分:0)
我在这里得到了正确答案:https://stackoverflow.com/a/35241091/4836759
无论如何,Thanx。
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_END);
cardView.setLayoutParams(layoutParams);