美文网首页
开发即时通讯功能遇到的问题

开发即时通讯功能遇到的问题

作者: Lost_Robot | 来源:发表于2017-06-15 10:14 被阅读122次

1.UI方面

1.软件盘覆盖聊天记录:

 <LinearLayout
        android:id="@+id/input_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">

        <ScrollView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:fillViewport="true">


            <EditText
                android:id="@+id/chat_edit_msg"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Input Your Message"
                android:maxLines="5"
                android:minLines="1"
                android:padding="5dp"
                android:textSize="20sp" />
        </ScrollView>

        <Button
            android:id="@+id/chat_send_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:padding="10dp"
            android:text="send"
            android:textSize="20sp" />

    </LinearLayout>

实现底部控件随着软键盘的弹出而上移

将EditText放在ScrollView中,设置 android:fillViewport="true"属性,ScrollView只将EditView嵌套在其中即可,不可将其他组件放进来;不可随意在清单文件中给该activity设置软键盘属性。

android:fillViewport="true" 这个属性允许ScrollView中的组件去充满它

若弹出的软键盘遮挡了部分上移的view,可以在清单文件中给activity设置属性android:windowSoftInputMode="adjustResize"一些不必要的属性不要随意添加,以免影响实现功能效果。

三种方法:
方法一:在你的activity中的oncreate中setContentView之前写上这个代码getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

方法二:在项目的AndroidManifest.xml文件中界面对应的<activity>里加入android:windowSoftInputMode="stateVisible|adjustResize",这样会让屏幕整体上移。
如果加上的是android:windowSoftInputMode="adjustPan"这样键盘就会覆盖屏幕。

方法三:把顶级的layout替换成ScrollView,或者说在顶级的Layout上面再加一层ScrollView的封装。这样就会把软键盘和输入框一起滚动了,软键盘会一直处于底部。但是我在AndroidManifest.xml对应的activity中设置
android:windowSoftInputMode="stateunspeciedadjustPan"
这样就可以了

2.Listview 始终显示到最后

  <ListView
        android:id="@+id/chat_listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/input_view"
        android:cacheColorHint="@color/transparent"
        android:divider="@null"
        android:listSelector="@color/transparent"
        android:scrollbars="none"
        android:transcriptMode="alwaysScroll" />

Listview始终显示到最后面的两种方式

 android:transcriptMode="alwaysScroll"    //xml中设置
 listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);    //Java代码设置
 MyAdapter adapter = new MyAdapter(this,messages);  //自定义的数据适配器   
listView.setAdapter(adapter);     //将适配器绑定到列表中
listView.setSelection(adapter.getCount());  //设置当前被选中的item,该item为最后一个

3.listview 不显示滚动条

android:scrollbars="none" 

4.listview 不显示分割线

android:divider="@null"

5.livstview Item在点击的时候,背景色不变,显示为透明色

 android:cacheColorHint="@color/transparent"
 android:listSelector="@color/transparent"

6.TextView设置行间距
textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型。查看源代码,默认textView 此属性是使用的是:

android.internal.R.styleable.TextView_textScaleX
setTextScaleX(a.getFloat(attr, 1.0f));

行间距:

//android:lineSpacingExtra   //设置行间距,如”3dp”
//android:lineSpacingMultiplier   //设置行间距的倍数
android:lineSpacingExtra="3dp"
android:lineSpacingMultiplier="1.5"

<TextView
    android:id="@+id/chat_receive_text"
    style="@style/chat_item_text"
    android:layout_alignTop="@+id/chat_receive_head"
    android:layout_marginRight="20dp"
    android:layout_toRightOf="@+id/chat_receive_head"
    android:background="@drawable/bg_chatting_item_left"
    android:paddingLeft="15dp"
    android:paddingRight="10dp"/>

   <style name="chat_item_text">
        <item name="android:textSize">16sp</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:minHeight">40dp</item>
        <item name="android:paddingTop">5dp</item>
        <item name="android:paddingBottom">5dp</item>
        <item name="android:lineSpacingExtra">3dp</item>
        <item name="android:gravity">center_vertical|left</item>
    </style>

2.API

1.字符串截取

字符串截取三个方法
String str = "s\\ziyuan";
String newStr = str.substring(str.indexOf("\\"),str.length());
String str1 = "100.562";
String result = str.substring(0, str.indexOf("."));

相关文章

网友评论

      本文标题:开发即时通讯功能遇到的问题

      本文链接:https://www.haomeiwen.com/subject/gesyqxtx.html