2017-02-02 3 views
0

그래서 나는 메시지가 담긴 메시지 컨테이너만큼 채팅하고 싶습니다. 있는 내가 고민하고, 여기에 http://img.creativemark.co.uk/uploads/images/805/15805/img3File.png텍스트 메시지의 내용과 같은 대화방

내 레이아웃은 다음과 같습니다 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="horizontal" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/single_message_view" 
android:layout_margin="5dp"> 

<LinearLayout 
    android:layout_marginEnd="15dp" 
    android:layout_marginStart="15dp" 
    android:layout_alignParentEnd="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:minWidth="100dp" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_weight="1" 
      android:layout_height="wrap_content" 
      android:text="author" 
      android:id="@+id/sender_data" 
      android:layout_marginEnd="5dp" 
      android:textColor="@color/colorWhite" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_weight="1" 
      android:textAlignment="textEnd" 
      android:layout_height="wrap_content" 
      android:text="date" 
      android:textColor="@color/colorWhite" 
      android:id="@+id/send_date" /> 

    </LinearLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:id="@+id/message_content" 
     android:background="@drawable/msg_haze" 
     > 

     <TextView 
      android:layout_margin="10dp" 
      android:layout_alignParentTop="true" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textColor="@color/colorWhite" 
      android:id="@+id/message_text" 
      android:text="content" /> 

     <LinearLayout 
      android:layout_margin="10dp" 
      android:minWidth="100dp" 
      android:layout_below="@id/message_text" 
      android:id="@+id/tags_container" 
      android:orientation="horizontal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 

      <android.support.v7.widget.RecyclerView 
       android:layout_marginTop="5dp" 
       android:layout_marginBottom="5dp" 
       android:id="@+id/message_tags" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:layoutManager="LinearLayoutManager" 
       tools:listitem="@layout/item_tag" /> 
     </LinearLayout> 

     <ImageView 
      android:layout_marginBottom="10dp" 
      android:layout_marginEnd="10dp" 
      android:paddingBottom="10dp" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentBottom="true" 
      android:layout_width="15dp" 
      android:layout_height="15dp" 
      android:id="@+id/message_state" /> 

     <LinearLayout 
      android:id="@+id/attachment_holder" 
      android:layout_marginTop="10dp" 
      android:padding="5dp" 
      android:visibility="gone" 
      android:orientation="vertical" 
      android:layout_alignParentBottom="true" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/attachments_haze"> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/attachments" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:layoutManager="GridLayoutManager"/> 

      <ImageView 
       android:id="@+id/attachment" 
       android:visibility="gone" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" /> 
     </LinearLayout> 

    </RelativeLayout> 
</LinearLayout> 

답변

2

당신이 필요로하는 채팅 메시지를 표시하려면 나는 채팅 메시지의 종류에 정말 비슷한 무언가를 달성하고자하는 보기의 내용을 수용하기 위해 자동으로 크기가 조절되는 비트 맵 이미지를 만들 수있는 9 개의 패치 이미지 사용

1

일반적으로 이러한 종류의 채팅 풍선은 the nine patch image을 사용하십시오. 이 9 개의 패치 이미지는 내용에 따라 크기를 조정할 수 있습니다.

다음은 보내고 받기위한 9 가지 패치 이미지입니다.

enter image description here

enter image description here

저장 .9.png 확장으로이 이미지. 이 이미지를 사용하여 배경을 제공하십시오.

+0

난 당신이 문제의 이미지 참조를 열 수있는 경우, 단색 간단한 사각형 상자 인클로저가있는 한이 습관이 특정 질문에 대한 필요가 생각하는 수 drawable 자체를 사용하여 얻을 수 있습니다. 9 패치 이미지가 필요 없습니다. 배경을 위해 색상 드로어 블을 사용하여 논리적으로 레이아웃을 설정하십시오. 레이아웃 전체 게시. – Mit

+0

그럴 수도 있습니다. 그러나 그것은 단지 참고 일뿐입니다. 대부분의 (전부는 아님) 채팅 거품은 9 가지 패치 이미지로 만들어집니다. –

+0

예, 당신은 절대적으로 옳습니다. 나는 "이 특별한 문제에 대해서는 필요하지 않습니다"라고 말했습니다. – Mit

0

은 @basavannevva와 일치합니다. 9 패치 이미지가 자동으로 늘어납니다 .. 컨텐츠 영역과 스트레치 영역을 제공해야합니다. 9 가지 패치 이미지를 만들 수있는 온라인 도구가 많이 있습니다. 그리고 나는 심지어 안드로이드 스튜디오 9 패치 파일을 편집 할 수 있다고 생각합니다.

0

temp_black.xml이 (

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 

    <solid android:color="#000000"/> 

    <padding 
     android:bottom="0dip" 
     android:left="0dip" 
     android:right="0dip" 
     android:top="0dip" /> 

</shape> 

temp_white.xml이을 (이 대화 상자의 배경으로 사용됩니다, 당신은 원하는 출력을 얻을 수 #FFFFFF에 아래 파일의 색상을 변경할 수 있습니다) 보낸 사람의 이름과 시간 사이의 검정색 점입니다. 이미지의 색상은 검정색입니다. 그러나 참조 목적으로 작성 했으므로 아래 출력물을 얻기 위해 색상을 편집하지 마십시오.

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" > 

    <solid android:color="#FFFFFF"/> 

    <corners android:radius="100dip" /> 

    <padding 
     android:bottom="0dip" 
     android:left="0dip" 
     android:right="0dip" 
     android:top="0dip" /> 

</shape> 

temp.xml (레이아웃 파일)

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="left|center_vertical" 
     android:layout_margin="10dp" 
     android:background="@drawable/temp_black" 
     android:paddingRight="10dp" 
     android:orientation="horizontal"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:adjustViewBounds="true" 
      android:src="@mipmap/ic_launcher"/> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginLeft="10dp" 
      android:orientation="vertical"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="left|center_vertical" 
       android:text="Sample Text Sample Text" 
       android:textSize="16sp" 
       android:textColor="#FFFFFF"/> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="left|center_vertical" 
       android:layout_marginTop="5dp" 
       android:orientation="horizontal"> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:text="Name" 
        android:textSize="11sp" 
        android:textColor="#FFFFFF"/> 

       <ImageView 
        android:layout_width="5dp" 
        android:layout_height="5dp" 
        android:layout_gravity="center" 
        android:layout_marginLeft="10dp" 
        android:layout_marginRight="10dp" 
        android:adjustViewBounds="true" 
        android:src="@drawable/temp_white"/> 

       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left|center_vertical" 
        android:text="Time" 
        android:textSize="11sp" 
        android:textColor="#FFFFFF"/> 

      </LinearLayout> 

     </LinearLayout> 

    </LinearLayout> 

</LinearLayout> 

617,451,515,마지막으로 출력 이미지 enter image description here

+0

그냥 레이아웃 중력을 오른쪽으로 변경하십시오. center_vertical 반대쪽에 대화 상자를 표시하십시오. 필요한 경우 알려주세요. 양쪽면 모두 제공 할 수 있습니다. – Mit