聊天页面输入框和发送按钮的布局问题 Android

布局文件如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<TableLayout
	    android:id="@+id/bottom_content"
	    android:layout_width="fill_parent"
	    android:layout_height="50dp"
	    android:layout_alignParentBottom="true">

	 <TableRow>
	     <TableRow android:layout_weight="3">
	        <EditText
      		android:hint = "@string/input_info"
      		android:id = "@+id/MessageText"/>
	 	</TableRow>
      	<TableRow android:layout_weight="1">
          <Button
      		android:text="@string/send_msg"
      		android:id = "@+id/MessageButton"/>
      	</TableRow>
	 </TableRow>
	</TableLayout>

 <ListView
	android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop = "true"
    android:layout_above="@+id/bottom_content"
    />
</RelativeLayout>

让输入框的宽度占屏幕宽度的3/4,发送按钮的宽度占屏幕宽度1/4。

但是当输入的文字过多并且关闭输入键盘或者打开输入键盘的时候,输入框的宽度会挤压发送按钮,当文字的宽度达到一定宽度,发送按钮会“消失”(看不见的状态)。

这里提供一个简单的解决办法:在Java代码中给该EditText设置一个监听器addTextChangedListener,监听输入内容的变化,然后再重写onTextChanged方法,使输入框的宽度占全屏的3/4,发送按钮的宽度占全屏的1/4。

核心代码如下,只需要在onTextChanged中设定输入框和发送按钮的宽度分别占3/4和1/4即可:

messageSend=(Button)findViewById(R.id.MessageButton);
editText=(EditText)findViewById(R.id.MessageText);
editText.addTextChangedListener(new TextWatcher() {
	@Override
	public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
		editText.setWidth((3*screenWidth)/4);
		messageSend.setWidth(screenWidth/4);
	}
	@Override
	public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {
	}
	@Override
	public void afterTextChanged(Editable arg0) {
	}
});
<span style="font-family:Arial;BACKGROUND-COLOR: #ffffff"></span>
时间: 2024-10-31 11:54:55

聊天页面输入框和发送按钮的布局问题 Android的相关文章

EmojiChat聊天页面实现,支持发送失败重发《IT蓝豹》

EmojiChat聊天页面实现,支持发送失败重发 EmojiChat聊天页面实现,支持发送失败后重新发送,且支持发送表情,发送图片,适合做社交软件聊天页面参考,功能已经很强大稳定了,本项目主要通过ListView对List<Message>设置ChatAdapter进行显示的.自定义聊天底部弹窗KJChatKeyboard,KJChatKeyboard 控件继承RelativeLayout实现SoftKeyboardStateHelper.SoftKeyboardStateListener,

iOS 自动布局 Auto Layout 入门 06 详情页面 (中) 按钮的布局

上一节我们完成了对歌手名称label的布局设置,这一节我们对最下方的三个按钮的布局进行配置. 首先选中三个按钮,设置Size to Fit Content,让这三个按钮拥有合适的大小: 为了方便查看按钮的大小,我们为按钮设置一个背景色并设置如下图所示的约束: 在预览窗口,旋转界面为横屏,可以看到三个按钮的布局可以接受: 如果三个按钮宽度一致,看起来会更好看一些, 接下来我们将这三个按钮设置为等宽的: 由于约束始终是两两之间的,所以我们会看到有个按钮有两个带等号的约束,这是正常的. 如果都是英文,

UI基础--UITableView实现仿QQ聊天页面

需求:类似于QQ聊天页面的展示,内容包括有头像.时间.聊天内容.相同时间发生的内容,只显示第一条内容的时间,并且点击输入框时,可以滚动到最后一条内容信息.具体效果图: 实例的文件结构: 实现的具体步骤: 1.布局界面,主要包括一个UIImageView.3个UIButton.1个UITextField: 2.自定义数据模型类,并测试数据是否能正常加载: 3.自定义cell,由于每行数据的高度都是不规则的,所以考虑先自定义好frame再来写自定义cell.属性包括frame模型以及生成可重用cel

iOS开发之微信聊天页面实现

在上篇博客(iOS开发之微信聊天工具栏的封装)中对微信聊天页面下方的工具栏进行了封装,本篇博客中就使用之前封装的工具栏来进行聊天页面的编写.在聊天页面中主要用到了TableView的知识,还有如何在俩天中显示我们发送的表情,具体请参考之前的博客:IOS开发之显示微博表情,在这儿就不做赘述啦.在聊天页面用到了三对,六种Cell,不过cell的复杂度要比之前的新浪微博(IOS开发之新浪围脖)简单的多.废话少说吧,还是先来几张效果图,在给出实现代码吧. 聊天界面的效果图如下:在下面的聊天界面中中用到了

Android软键盘弹出,覆盖h5页面输入框问题

之前我们在使用vue进行 h5 表单录入的过程中,遇到了Android软键盘弹出,覆盖 h5页面 输入框 问题,在此进行回顾并分享给大家: 系统:Android 条件:当输入框在可视区底部或者偏下的位置 触发条件:输入框获取焦点,弹出软键盘 表现:软键盘 覆盖 h5页面中的输入框 问题分析: 1.发现问题:当前页面中box为flex布局,内容为上下固定高,中间自适应(中间区域内容过多会出现滚动条,input框在wrapper的底部),input获取焦点,手机键盘弹出,input未上移到可视区内,

做一个群组聊天页面

要做个群组聊天的页面,参考微信的web版本,大致就是分为左右两列,左边是群组列表,右边是群组中的对话 示例图如下: 这个页面风格是使用ACE做的,再次啧啧下,ACE真TMD强大,这个页面的风格很招人喜欢. 做这个页面刚开始的时候我走了弯路,初步想的是使用iframe,左侧群组聊天页面是页面加载的,右侧的群组对话框是个iframe.然后点击左侧的任意一个群组,右侧的对话iframe就修改src,然后更新对话的时候也超简单,直接iframe重新加载一下就ok了. 但是呢,后来发现,我这样需要写的co

Android 自定义EditText输入框 带清空按钮

总结  Android 自定义EditText输入框 带清空按钮 当用户输入字符后  EditText会自动在输入框的内部右侧出现删除按钮 重写EditText达到简化布局的效果 效果图: 继承EditText package com.example.myedittexttest; import android.content.Context; import android.graphics.Rect; import android.graphics.drawable.Drawable; imp

AS3聊天单行输入框图文混排完美实现

几年前刚毕业,第一个游戏模块做的就是聊天.到现在,几个游戏写过几次聊天模块, 之前在4399做的<幻龙骑士>(又名<神骑士>),还有上周六刚上线的<疯狂的子弹>, 用的是同一套代码,聊天输入框没有图文混排,而是用符号代替,输出面板才有图文混排. 输出面板的图文混排由于内容没有键鼠操作,实现很简单,不在本文讨论之列:当然本 文的代码中抽出一小部分就可以实现了.以上两款游戏没有加密,有兴趣的可以去弄来看看, <子弹>里面的键鼠.技能.射击.弹道搞得好累人啊 ?(

html打开个人QQ聊天页面

打开qq聊天页面(有权限需要添加好友) <a href="tencent://message/?uin=1578929883&Site=&Menu=yes" class="icon icon-qq first"></a> 强制打开临时会话 <a href="tencent://message/?Menu=yes&uin=这里是QQ号& Service=300&sigT=45a1e5847