2013-11-26 117 views
1

我不知道文本將如何提前對齊。但是我會分開進行水平和垂直對齊。以編程方式設置對齊方式的最佳方法是什麼?我可以做這樣的事情:Android TextView文本對齊

/** 
* Sets text alignment 
* @param alignment 
*/ 
public void setAlignment(String alignment, String vAlignment){ 
    if (alignment.equals("Left")){ 
     if (vAlignment.equals("Top")) 
      setGravity(Gravity.LEFT | Gravity.TOP); 
     else if (vAlignment.equals("Center")) 
      setGravity(Gravity.LEFT | Gravity.CENTER); 
     else if (vAlignment.equals("Bottom")) 
      setGravity(Gravity.LEFT | Gravity.BOTTOM); 
    } 
    //same for other horizontal alignments 

是否有任何其他方式做到這一點?我也將不得不看看文本理由和稍後拉伸,所以如果我可以一個接一個地分別設置水平和垂直對齊,那將會更容易。可能嗎?

回答

2

您可以嘗試使用操作|=。它的行爲完全像+=,它適用於int值。

public void setAlignment(String alignment, String vAlignment){ 

      int myGravity = 0; 
      if (alignment.equals("Left")){ 
        myGravity |= Gravity.LEFT; 
      } 

      if (vAlignment.equals("Top")){ 
        myGravity |= Gravity.TOP; 
      } 

      ... 

      myTextView.setGravity(myGravity); 
    } 
+0

這工作完美,謝謝=) – etilia

0

對齊文本視圖的另一種方式是這樣的。

  LayoutParams lp = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT); 
      lp.addRule(LinearLayout.CENTER_IN_PARENT); 
      textView.setLayoutParams(lp); 

setGravity也是對齊的正確方法!

你可以問,如果您有任何疑問

0

而不是字符串,提供水平和垂直對齊,之後進行比較。給這個方法int值和只有一行來設置。喜歡。

public void setAlignment(int alignment, String vAlignment){ 
    if (vAlignment==48) // vAlignment will be 48=top, 17=center, 80=bottom 
     setGravity(alignment | Gravity.TOP); 
    else if (vAlignment==17) 
     setGravity(alignment | Gravity.CENTER); 
    else if (vAlignment==80) 
     setGravity(alignment | Gravity.BOTTOM); 
} 

或者你也可以使用字符串作爲vAllinment,你已經在使用。

換種方式

public void setAlignment(int alignment, String vAlignment){ 
    if (vAlignment==Gravity.TOP)  
     setGravity(alignment | Gravity.TOP); 
    else if (vAlignment==Gravity.CENTER) 
     setGravity(alignment | Gravity.CENTER); 
    else if (vAlignment== Gravity.BOTTOM) 
     setGravity(alignment | Gravity.BOTTOM); 
} 
+0

您正在使用運算符'=='來比較一個字符串與一個int,並且永遠不應該這樣做。這真的有用嗎? – ervaka

+0

對不起,比較使用「等於」如果字符串和使用「==」如果int。 –

+0

沒關係,但'vAlignment'是一個字符串,'Gravity.TOP'是一個int。不確定你想要做什麼。例如,您是否建議將vAlignment傳遞爲「48」? – ervaka