如何在相对布局中以编程方式设置重力

2024-03-13

如何在相对布局中以编程方式设置重力。我有一个带有名称的 XML 布局chat_viewer_message.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/background"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingRight="4dip"
    android:paddingBottom="4dip"
    android:gravity="left"
    android:background="@drawable/chat_bg_in">

    <ImageView
        android:id="@+id/avatar"
        android:layout_width="32dip"
        android:layout_height="32dip"
        android:layout_marginLeft="4dip"
        android:src="@drawable/avatar_1_1"
        />

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/avatar"
        android:paddingLeft="4dip"
        />

</RelativeLayout>

编程中的代码视图如下:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final int type = getItemViewType(position);
        final View view;
        if (convertView == null) {
            final int resource = R.layout.chat_viewer_message;
            view = activity.getLayoutInflater()
                    .inflate(resource, parent, false);
            if (type == TYPE_MESSAGE)
                ((TextView) view.findViewById(R.id.text)).setTextAppearance(
                        activity, appearanceStyle);
        } else
            view = convertView;



        final MessageItem messageItem = (MessageItem) getItem(position);
        String name;
        final String account = messageItem.getChat().getAccount();
        final String user = messageItem.getChat().getUser();
        final String resource = messageItem.getResource();
        final boolean incoming = messageItem.isIncoming();
        final String server_host = view.getResources().getString(
                R.string.server_host);
        if (isMUC) {
            name = resource;
        } 


        if (incoming) {
            view.setBackgroundResource(R.drawable.chat_bg_in);
        } else {
            // I WANT TO GRAVITY TO RIGHT. HOW TO CODE? THANKS
            view.setBackgroundResource(R.drawable.chat_bg_out);
        }

        return view;
}

在 id = background 的relativelayout 处查看重力,默认重力为 LEFT,所以我想如果 !incoming 相对布局处的重力值是 RIGHT 而不是 LEFT。

Thanks.


Cast view容器布局,在本例中RelativeLayout,并使用setGravity(int) on it:

if (incoming) {
    view.setBackgroundResource(R.drawable.chat_bg_in);
} else {
    // I WANT TO GRAVITY TO RIGHT. HOW TO CODE? THANKS
    view.setBackgroundResource(R.drawable.chat_bg_out);

    ((RelativeLayout) view).setGravity(Gravity.RIGHT);
}

请注意(来自文档):

请注意,由于RelativeLayout考虑了每个子元素的位置 相对于彼此显着,设置重力会影响 将所有子级定位为父级中的一个单元。 这种情况发生在孩子们相对定位之后。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在相对布局中以编程方式设置重力 的相关文章

随机推荐