气泡聊天布局

2024-04-17

我有一个布局

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/background"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:background="@drawable/chat_bg">

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

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5sp"
        />

</LinearLayout>

在java代码中我有:

LayoutParams lp1 = (LayoutParams) textView.getLayoutParams();
    LayoutParams lp2 = (LayoutParams) avatarView.getLayoutParams();
    if (incoming) {
        lp1.gravity = Gravity.LEFT;
        lp2.gravity = Gravity.LEFT;
        textView.setBackgroundResource(R.drawable.speech_bubble_green);
        textView.setLayoutParams(lp1);
        avatarView.setLayoutParams(lp2);
    } else {
        lp1.gravity = Gravity.RIGHT;
        lp2.gravity = Gravity.RIGHT;
        textView.setBackgroundResource(R.drawable.speech_bubble_orange);
        textView.setLayoutParams(lp1);
        avatarView.setLayoutParams(lp2);
    }

我希望传入的消息及其头像能够对齐right像 Viber 一样,外向left,但现在所有消息都是对齐的left

感谢所有建议


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/background"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        <!-- android:layout_gravity="left" -->
        android:orientation="horizontal">

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

        <TextView
                android:id="@+id/text"
                android:text="asd"
                android:textColor="#FFFFFF"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5sp"
        />

</LinearLayout>

要在“活动”中设置重力:

LinearLayout lp = (LinearLayout) findViewById(R.id.background);
lp.setGravity(Gravity.RIGHT);
lp.setGravity(Gravity.Left);

所以,我唯一改变的是你的LinearLayout在 XML 文件中,更改layout_width from fill_parent to wrap_content


EDIT:(由于更多信息)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/background"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_gravity="left"
                android:orientation="horizontal">


    <RelativeLayout android:id="@+id/avatar2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/text2">
        <ImageView
                android:id="@+id/avatar"
                android:layout_width="32dip"
                android:layout_height="32dip"
                android:layout_marginRight="4dip"
                android:src="@drawable/controller"
                />
    </RelativeLayout>

    <RelativeLayout android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/avatar">
        <TextView
                android:id="@+id/text"
                android:text="asd"
                android:textColor="#FFFFFF"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                />
    </RelativeLayout>

</RelativeLayout>

So, use

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)yourLayout.getLayoutParams();
params.addRule(RelativeLayout.RIGHT_OF, R.id.id_to_be_left_of);
//params.addRule(RelativeLayout.LEFT_OF, R.id.id_to_be_left_of);
yourLayout.setLayoutParams(params); //causes layout update

不要忘记依赖关系不能是圆形的

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

气泡聊天布局 的相关文章

随机推荐

  • 如何将 Twitter 小部件集成到 Reactjs 中?

    我想将 Twitter 小部件添加到 React 中 但我不知道从哪里开始或如何做 我对 React JS 很陌生 下面是 HTML 版本的代码 div class Twitter a class twitter timeline href
  • 如何在 Meteor 中缓存数据?

    感谢大家 最近我想在meteor上建立一个小型cms 但有一些问题 1 缓存 页面缓存 数据缓存等 例如 当人们搜索某篇文章时 在服务器端 Meteor publist articles function keyword return Ar
  • chrome.storage 在 chrome 扩展中未定义

    我正在开发一个 Google Chrome 扩展程序 并且已经为此工作了一段时间 所以它已经安装了一段时间 我更新了清单文件以包含 存储 权限并重新加载扩展 但是 当我在控制台中尝试时 chrome storage is undefined
  • Microsoft Bot 在 WebChat 中显示不必要的重复消息?

    当用户第一次访问我的聊天室时 他们会收到欢迎消息 并立即被要求提供他们的名字 一旦用户输入他们的名字 就会出现欢迎消息 并再次显示输入名字的文本提示 只有在他们第二次输入名字后 机器人才会继续处理下一个有关姓氏的问题 此外 当用户最终在第一
  • 在 Java JFrame 上添加图像 - Netbeans

    我在用着NetBeans 7 1用 Java 编写代码 我已经创建了一个JFrame充满了一些labels textbox and buttons 我该如何导入一些图像 JPG PNG etc 从我的电脑到同一个JFrame 在框架的特定位
  • 如何以 const 形式返回指向指针列表的私有指针?

    我有一个指向指针列表的指针 作为私有变量 我还有一个 getter 它返回指向列表的指针 我需要保护它免受更改 我找不到如何使用reinterpret cast 或const cast 对此 class typeA shared ptr
  • 实现字典的 Applicative 实例(Map、关联数组)

    为关联数组实现函子实例 本质上是映射操作 似乎很简单 例如 参见Functor定义 1 然而 Applicative实例未定义 地图不是应用程序有一个很好的理论理由吗 它们需要什么额外的限制才能成为应用程序 1 https hackage
  • 如果 B 列中的值 = 特定文本,则将特定文本插入到 A 列中的值中

    简单地说 如果 B 列中的任何单元格包含thisvalue然后附加到 A 列中的相邻单元格sometext 这是怎么做到的 一个简单的 if 语句 例如 IF ISNUMBER SEARCH thisvalue B1 sometext 编辑
  • 多个 NSEntityDescription 声明 NSManagedObject 子类

    我正在创建一个允许我使用核心数据的框架 在框架的测试目标中 我配置了一个名为的数据模型MockModel xcdatamodeld 它包含一个名为MockManaged有一个单一的Date财产 为了测试我的逻辑 我正在创建一个内存存储 当我
  • 为什么必须对存储在堆中的函数的局部变量调用delete?

    假设您有以下函数 void doSomething int data new int 100 为什么这会产生内存泄漏呢 由于我无法在函数外部访问此变量 为什么编译器不在每次调用此函数结束时自行调用delete 为什么这会产生内存泄漏呢 因为
  • 核心数据迁移非常慢

    我正在尝试执行核心数据迁移 一切正常 只是迁移本身需要 10 多秒的时间 我正在使用 xcmappingmodel 在两个模型版本之间进行映射 效果很好 除了所需的时间长度之外 在下面的代码中 开始迁移 和 完成迁移 日志之间有 10 秒
  • 如何使用 make 打印目标的所有先决条件并构建规则

    一个大的项目通常有一个复杂的Makefile系统 有许多变量定义和目标先决条件依赖项分散在不同的 Makefile 中 有什么方便的方法来打印目标的所有先决条件和构建规则吗 具体来说 有两个问题 问题1 假设我有四个 Makefile 生成
  • 设置并验证 Python MySQL 连接中使用的 SSL/TLS 版本

    如何告诉 Python MySQL 连接器使用哪种 SSL TLS 协议 特定的 例如 TLS1 2 或最低的 如何检查已建立的连接使用哪种协议 我有一个应用程序使用mysql connector python 8 0 18 我连接这样的东
  • 将 CMake 变量从 GUI 导出到命令行

    是否可以将 CMake GUI 中设置的所有变量值导出到单个命令行字符串 以便可以从外部工具快速使用它 所以输出会是这样的 cmake DVar1 ON DVar2 foo 你可以从 Tools gt Show My Changes
  • Corda 真的需要公证人才能达成唯一性共识吗?

    科达共识简介 https docs corda net releases release V2 0 key concepts consensus html说 唯一性共识是由公证人提供的 我们是说 如果没有公证人 A 有可能说服 B 将一笔交
  • 我如何通过查询从 Firestore 获取单个文档(我正在使用 Ionic 4 )

    早上好 我在 firestore 中有数据库如下 collections documents fields 123 news1 title some data news2 content some data 例如我想获取我的 ionc4 应
  • Java FXML 从绝对路径加载(动态)

    我想从绝对路径或 jar 系统外部的路径加载 fxml 文件 背景 它将是一个简单的插件系统 在插件文件夹中查找所有 fxml 文件 后来的 jar 文件 并将其自动包含在 TabPane 中 String fxmlpath C plugi
  • ColdFusion 参数化查询

    我运行一个查询来填充我试图参数化的 CFChart
  • 强制使用牙套

    作为我不久前写的代码标准文档的一部分 我强制要求 您必须始终对循环和 或条件代码块使用大括号 即使 特别是 它们只有一行 Example this is wrong if foo bar else baz while stuff thing
  • 气泡聊天布局

    我有一个布局