2014-03-19 92 views
3

我正在開發一個android應用程序。如何用RelativeLayout以編程方式設置textview的引力?

public class MyListAdapter extends BaseAdapter { 
    Context con; 
    private LayoutInflater layoutinf; 
    ArrayList<Boolean> itemChecked = new ArrayList<Boolean>(); 
    ArrayList<String> items_ = new ArrayList<String>(); 

    public MyListAdapter(ChatActivity context) { 
     con = context; 
    } 

    public int getCount() { 
     return item_id.size(); 
    } 

    public Object getItem(int position) { 
     return item_id.size(); 
    } 

    public long getItemId(int position) { 
     return item_id.get(position).hashCode(); 
    } 

    public View getView(final int position, View arg1, ViewGroup arg2) { 

     View v = arg1; 
     ViewHolder holder = null; 
     if (v == null) { 
      layoutinf = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = layoutinf.inflate(R.layout.row_chat, null); 
      holder = new ViewHolder(); 

     // holder.tv_contact = (TextView) v.findViewById(R.id.phone_num); 
      holder.tv_sms_body = (TextView) v.findViewById(R.id.msg_body); 
      holder.tv_time = (TextView) v.findViewById(R.id.time); 

      v.setTag(holder); 
     } else { 
      holder = (ViewHolder) v.getTag(); 
     } 

     if(item_flag.get(position).equals("1")) 
     { 
      holder.tv_sms_body.setBackgroundResource(R.drawable.bubble_green); 

     } 
        else if(item_flag.get(position).equals("0")) 
        { 
         holder.tv_sms_body.setBackgroundResource(R.drawable.bubble_yellow); 

        } 


     //holder.tv_contact.setText("" + item_phone_num.get(position)); 
     holder.tv_sms_body.setText(item_msg_body.get(position)); 
     holder.tv_time.setText(item_time.get(position)); 

     return v; 
    } 
} 

佈局文件如下::我通過虛報行如下移植ListView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 



<TextView 
    android:id="@+id/msg_body" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignRight="@id/phone_num" 
    android:layout_below="@id/phone_num" 
    android:text="SMS" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/time" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_below="@id/msg_body" 
    android:text="time" 
    android:textSize="12dp" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

如何設置TextView的權重編程在上面的代碼中使用的RelativeLayout ???

+0

你想在TextView的文本有重力的權利,或TextViews的佈局有佈局重心嗎? – NameSpace

+0

我希望TextView的佈局具有重力權。 – user3381979

回答

4

您可以設置這樣的..

RelativeLayout.LayoutParams params = new LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
    textView.setLayoutParams(params); 
+0

@NameSpace你有沒有看過xml文件,一個textview是右邊,另一個是左邊,那麼它將如何刷新?? ..如果你想要的話,你可以使用layoutparams –

+0

對齊另一個視圖,在這種情況下,查看xml,他們是在不同的行上,所以對齊父母權限會產生相同的效果。 – NameSpace

+0

讓我們假設我沒有任何處理TextView的ID爲@ + id/time的XML對齊方式。我問了關於TextView msg_body的問題,它是在XML中左對齊的。我想使用我的代碼在正確的位置,我該如何做到這一點? – user3381979

3

這裏是設置TextView的重力的代碼。

yourTextView.setGravity(Gravity.CENTER); 
+0

這導致Textview中的文本被居中對齊,而不是視圖居中其中。 –

+0

但我想要完全對齊的TextView。 – user3381979

相關問題