2014-04-22 4 views
1

나는 채팅 메시지를 적절히 정렬해야하는 채팅 응용 프로그램을 만들고 있습니다. 사용자의 오른쪽과 다른 사용자를 왼쪽으로 정렬해야합니다. 메시지가 표시된 목록 뷰가 있습니다. 지금은 , 나는 데이터를 얻기 위해 번들 된 json을 사용하고있다. 내 코드는프로그래밍 방식으로 레이아웃에 중력을 설정하는 방법은 무엇입니까?

이것은 사용자가 입력 한 메시지에 문자열을 추가하기위한 것이다.

그 후
final EditText et = (EditText)findViewById(R.id.EditText1); 
final Button imb=(Button)findViewById(R.id.btn_send); 
      imb.setOnClickListener(new OnClickListener() 
      { 
      @Override 
      public void onClick(View arg0) 
      { 
        String str = et.getText().toString()+":aeiou"; 
        web.add(str); 
        scrollMyListViewToBottom(); 
        et.setText(" "); 
        adapter.notifyDataSetChanged(); 


      } 

난 스트링을 분할하고, 첨부 된 문자열이있는 경우 메시지 user.ie에서, 다음 배치의 중력은 오른쪽으로 설정해야하는 array.If에 저장하고, 그렇지 않으면 왼쪽. 나는이 잘못 이것은 무엇

mychat=web.get(position); 
if(mychat.contains(":")) 
{ 
    String[] splitted = mychat.split(":"); 
    String chats; 

    if(splitted[1].equalsIgnoreCase("aeiou")) 
    { 

     chats=splitted[0]; 
     Toast.makeText(context, "You entered...."+chats, Toast.LENGTH_SHORT).show(); 
     LinearLayout my_layout = (LinearLayout) rowView.findViewById(R.id.main_layout); 

     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     params.gravity = Gravity.RIGHT; 
     my_layout.setLayoutParams(params); 


     //my_layout.setGravity(Gravity.RIGHT); 

     txtTitle.setText(chats); 
    } 
} 
else 
    { 
    txtTitle.setText(web.get(position)); 
    } 




txtTitle.setBackgroundResource(R.drawable.test); 

내 어댑터 클래스에서이 코드를 사용? 도와주세요 ... 여기

내 XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#2a2a34" 
    android:padding="3dp" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 


     <RelativeLayout 
     android:id="@+id/chat_icon_layout" 
      android:layout_width="match_parent" 
      android:layout_weight="4" 
      android:layout_height="match_parent" > 

      <ImageView 
       android:id="@+id/img" 
       android:layout_width="60dp" 
       android:layout_height="60dp" 
       android:layout_centerHorizontal="true" 
       android:layout_centerVertical="true" 
       android:src="@drawable/white" /> 

      <ImageView 
       android:id="@+id/img1" 
       android:layout_width="55dp" 
       android:layout_height="55dp" 
       android:layout_centerHorizontal="true" 
       android:layout_centerVertical="true" 
       android:src="@drawable/abs__ab_bottom_solid_light_holo" /> 

      </RelativeLayout> 

     <LinearLayout 
      android:id="@+id/chat_text_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:padding="0dp" 
      android:layout_weight="1" > 

        <TextView 
        android:id="@+id/txt" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Message" 
        android:textAppearance="?android:attr/textAppearanceSmall" 
        android:textColor="#ffffff" /> 

      </LinearLayout> 


    </LinearLayout> 

</LinearLayout> 

답변

2

가있는 경우이 내용의 정렬하기 위해 당신의 LinearLayout에 대한 채우기 부모를 사용해야합니다 . 따라서해야 할 일

if(...) 
    txtTitle.setText(chats); 
txtTitle.setGravity(Gravity.RIGHT); 
    } 
} 
else 
    { 
    txtTitle.setText(web.get(position)); 
txtTitle.setGravity(Gravity.LEFT); 
    } 
+0

예 ... 다시 여기에 ... –

+0

무엇 hmmmmmmmmmmmmmmmm –

+0

내가 얼마나 바보 핑 소리를 들었는지 확인하십시오 :/나는 U가 지진으로 천국에 갔던 것처럼 생각합니다 :/:/ – Nevaeh

0

문제는 당신이 설정하는이다 레이아웃 중력 오른쪽 .. 텍스트 뷰 중력을 왼쪽이나 오른쪽으로 설정해보십시오.

xml android : gravity = "left"또는 android : gravity = "right"속성을 추가하십시오.

+0

메시지가 사용자인지 또는 다른 사람인지에 따라 왼쪽 및 오른쪽 중력을 설정해야하므로 프로그래밍 방식으로 수행해야합니다. – Nevaeh

+0

좋습니다, 시도해보십시오 labelTV.setGravity (Gravity.RIGHT | Gravity.BOTTOM); –

+0

입력 진입 중력이 왼쪽으로 나가면 중력이 왼쪽으로 나오면 else 문을 사용합니다. 여기서 labeltv는 텍스트 뷰입니다. –

1

어댑터에서 다른 조건을 else 조건으로 설정해야합니다. 예제는 다음과 같습니다.

너는 너의 너비에 대해 wrap_content를 사용하는 것을 보았다. 그래서 귀하의 LinearLayout 귀하의 콘텐츠를 포장하고 레이아웃의 왼쪽이나 오른쪽에 맞출 수 없습니다. 당신은 당신이 당신의 문자 메시지는 텍스트보기를, 즉 정렬해야 올바른 때문에 왼쪽으로 채팅 메시지를 정렬 할하고 있기 때문에 충분한 공간

if(splitted[1].equalsIgnoreCase("aeiou")) 
     { 

      chats=splitted[0]; 
      Toast.makeText(context, "You entered...."+chats, Toast.LENGTH_SHORT).show(); 
      LinearLayout my_layout = (LinearLayout) rowView.findViewById(R.id.main_layout); 

      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
      params.gravity = Gravity.RIGHT; 
      my_layout.setLayoutParams(params); 

      //my_layout.setGravity(Gravity.RIGHT); 

      txtTitle.setText(chats); 
     } 
    } 
    else{ 
     LinearLayout my_layout = (LinearLayout)rowView.findViewById(R.id.main_layout);  
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
     params.gravity = Gravity.LEFT; 
     my_layout.setLayoutParams(params); 
     txtTitle.setText(web.get(position)); 
    } 
+0

textview와 이미지가 포함 된 전체 레이아웃의 레이아웃 중력을 설정합니다. 이미지도 필요합니다. 그게 틀렸어? – Nevaeh

+0

당신의 의도가 그렇다면, 그렇지 않습니다 :) –

+0

어떻게 이것을 해결할 수 있습니까 ?? – Nevaeh

관련 문제