2016-08-02 64 views
0

我有一个消息传递活动,我希望用户能够输入到messageField,并在文本流入下一行时使其动态增长。我还需要限制它应该增长多少,因为用户仍然应该看到发送的最后几条消息。我不知道从哪里开始。任何方向将不胜感激。我chat_activity.xml的根据子视图的大小缩放RelativeLayout TextView的内容

相关内容:(在RelativeLayout这一切都下辖)

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_above="@+id/interactionHolder" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:paddingBottom="10dp" 
    android:paddingTop="10dp" 
    android:layout_below="@+id/headerContainer" 
    android:id="@+id/contentFrameLayout"> 

    <ListView 
     android:id="@+id/messageListView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal" 

     android:transcriptMode="disabled" 
     android:smoothScrollbar="false" 
     android:dividerHeight="5dp" 
     android:divider="@null" 
     android:drawSelectorOnTop="false" 
     android:listSelector="@android:color/transparent" 
     android:cacheColorHint="#00000000" /> 

</FrameLayout> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:id="@+id/interactionHolder" 
    android:layout_alignParentBottom="true" 
    android:visibility="visible"> 

    <RelativeLayout 
     android:id="@+id/textfieldcontainer" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="false" 
     android:layout_alignParentRight="false" 
     android:layout_gravity="bottom" 
     android:alignmentMode="alignMargins" 
     android:background="#ff9d9d9d" 
     > 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/photoButton" 
      android:scaleType="centerCrop" 
      android:src="@android:drawable/ic_menu_camera" 
      android:layout_alignParentLeft="true" 
      android:background="#ff9d9d9d" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="5dp" 
      android:contentDescription="@string/upload" /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/voiceButton" 
      android:layout_toRightOf="@+id/photoButton" 
      android:focusable="false" 
      android:src="@android:drawable/ic_btn_speak_now" 
      android:scaleType="centerCrop" 
      android:background="#ff9d9d9d" 
      android:layout_centerVertical="true" 
      android:contentDescription="@string/voicenote" /> 

     <EditText 
      android:id="@+id/messageField" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:ems="10" 
      android:gravity="left|center" 
      android:inputType="textMultiLine" 
      android:background="@android:drawable/editbox_background_normal" 
      android:textColor="#ff000000" 
      android:layout_centerVertical="true" 
      android:layout_toRightOf="@+id/voiceButton" 
      android:layout_toEndOf="@+id/voiceButton" 
      android:layout_toLeftOf="@+id/sendButton" 
      android:layout_toStartOf="@+id/sendButton" /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/sendButton" 
      android:src="@android:drawable/ic_menu_send" 
      android:layout_alignParentRight="true" 
      android:background="#ff9d9d9d" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="5dp" 
      android:contentDescription="@string/sendbutton" 
      android:clickable="true" /> 

    </RelativeLayout> 
</RelativeLayout> 

回答

1

可以使用下面的这两个XML属性限制用户输入您的EditText

android:maxLines="[int]" // No. of lines 
android:maxLength="[int]" // No. of characters 

这个小部件的比例也将相应用户输入来调整。

[编辑]

为了使RelativeLayout随着EdditText(限制在一定程度上)扩展,你可以尝试改变你的布局PARAMS如下:

<!-- This was orininally RelativeLayout, changing this to FrameLayout for performance reasons --> 
<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" <!-- change here --> 
    android:id="@+id/interactionHolder" 
    android:layout_alignParentBottom="true" 
    android:visibility="visible"> 

    <RelativeLayout 
     android:id="@+id/textfieldcontainer" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" <!-- change here --> 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="false" 
     android:layout_alignParentRight="false" 
     android:layout_gravity="bottom" 
     android:alignmentMode="alignMargins" 
     android:background="#ff9d9d9d" 
     > 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/photoButton" 
      android:scaleType="centerCrop" 
      android:src="@android:drawable/ic_menu_camera" 
      android:layout_alignParentLeft="true" 
      android:background="#ff9d9d9d" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="5dp" 
      android:contentDescription="@string/upload" /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/voiceButton" 
      android:layout_toRightOf="@+id/photoButton" 
      android:focusable="false" 
      android:src="@android:drawable/ic_btn_speak_now" 
      android:scaleType="centerCrop" 
      android:background="#ff9d9d9d" 
      android:layout_centerVertical="true" 
      android:contentDescription="@string/voicenote" /> 

     <EditText 
      android:id="@+id/messageField" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" <!-- change here --> 
      android:maxLines="4"     <!-- change here --> 
      android:ems="10" 
      android:gravity="left|center" 
      android:inputType="textMultiLine" 
      android:background="@android:drawable/editbox_background_normal" 
      android:textColor="#ff000000" 
      android:layout_centerVertical="true" 
      android:layout_toRightOf="@+id/voiceButton" 
      android:layout_toEndOf="@+id/voiceButton" 
      android:layout_toLeftOf="@+id/sendButton" 
      android:layout_toStartOf="@+id/sendButton" /> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/sendButton" 
      android:src="@android:drawable/ic_menu_send" 
      android:layout_alignParentRight="true" 
      android:background="#ff9d9d9d" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="5dp" 
      android:contentDescription="@string/sendbutton" 
      android:clickable="true" /> 

    </RelativeLayout> 
</FrameLayout> 
+0

谢谢,但它不是在我上面的设置中工作。我想我必须扩大我的相对布局,但不知道如何? – Stephan

+1

@Stephan检查我的帖子更新是否超过 – Shaishav

+0

谢谢,现在如何让图像按钮保持在父母的底部? – Stephan

0

我已经使用这个对我的聊天活动。检查这个控件。

<EditText 
      android:id="@+id/messageField" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:layout_weight="1" 
      android:background="@null" 
      android:hint="Message" 
      android:inputType="textMultiLine|textCapSentences" 
      android:maxHeight="100dp" 
      android:maxLength="8000" 
      android:minLines="1" 
      android:padding="10dp" 
      android:scrollbars="vertical" 
      android:textColor="@color/black" 
      android:textColorHint="@color/gray_60" 
      android:layout_toRightOf="@+id/voiceButton" 
      android:layout_toEndOf="@+id/voiceButton" 
      android:layout_toLeftOf="@+id/sendButton" 
      android:layout_toStartOf="@+id/sendButton" 
      android:textSize="15dp" /> 
相关问题