2013-10-16 29 views
1

我有一个水平线性布局的textview,并且textview正在顶部对齐。我希望它垂直对齐。如何在android中设置风格的重力?

我TextView的设置为一个名为式的 “箭头”

<style name="arrow"> 
    <item name="android:textSize">30sp</item> 
    <item name="android:textColor">#ffffff</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:gravity">center</item> 
    <item name="android:layout_gravity">center</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
</style> 

的Java

  LinearLayout LL = new LinearLayout(this); 
      LL.setOrientation(LinearLayout.HORIZONTAL); 
      LL.setPadding(15, 15, 15, 15); 
      LinearLayout.LayoutParams courseMargin = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
      courseMargin.setMargins(5, 5, 5, 5); 
      LL.setLayoutParams(courseMargin); 

          // here I add more things into LL... 

      TextView arrow = new TextView(this); 
      arrow.setText(">"); 
      arrow.setTextAppearance(this, R.style.arrow); 
      LL.addView(arrow); 

然而,这仍不能使其垂直对齐......

有谁知道这是怎么回事?

感谢

+0

将代码发布到包含textview的布局xml文件中 – FoamyGuy

+0

我使用java代码创建它。我把它贴在上面。 – omega

回答

2

setTextAppearance()状态的javadoc:

设置文本颜色,大小,样式,颜色提示,并突出显示从 指定TextAppearance资源的颜色。

其中不包括关于位置或重力的任何内容。我想这就是为什么你的引力没有任何影响。

尝试这样的:

//for android:gravity 
arrow.setGravity(Gravity.CENTER); 

//for android:layout_gravity 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
params.gravity=Gravity.CENTER; 
arrow.setLayoutParams(params); 

话虽这么说,因为你是TextView宽度和高度WRAP_CONTENTandroid:gravity是不会有任何效果。所以真的android:layout_gravity块的代码应该是你需要的一切。