如何将这个textView垂直居中?

问题描述:

好了,所以我有这个问题:enter image description here如何将这个textView垂直居中?

我要疯了,因为我一直在努力,现在找到这个问题的答案为约3小时。 无论如何,我想对齐第一个textView(如图所示)垂直居中。 我正在编程创建这些textViews(不需要问为什么,我只需要)。 代码:

private View formTextViewUnits(String units) { 
    TextView textViewUnits = new TextView(getActivity()); 
    textViewUnits.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); 
    textViewUnits.setText(units); 
    textViewUnits.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); 
    textViewUnits.setTextColor(Color.parseColor("#e9e9e9")); 
    textViewUnits.setTextSize(TypedValue.COMPLEX_UNIT_DIP, getResources().getDimension(R.dimen.main_stripe_small_text)); 

    return textViewUnits; 
} 

private View formTextViewAmount(Float amount) { 
    TextView textViewAmount = new TextView(getActivity()); 
    textViewAmount.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
    textViewAmount.setText(amount.toString()); 
    textViewAmount.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL); 
    textViewAmount.setTextColor(Color.parseColor("#3ebce6")); 
    textViewAmount.setTextSize(TypedValue.COMPLEX_UNIT_DIP, getResources().getDimension(R.dimen.main_stripe_big_text)); 

    return textViewAmount; 
} 

//THIS IS THE FAULTY TEXTVIEW 
private View formTextViewMessage(String message) { 
    TextView textViewMessage = new TextView(getActivity()); 
    textViewMessage.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
    textViewMessage.setText(message); 
    textViewMessage.setGravity(Gravity.CENTER_VERTICAL); 
    textViewMessage.setTextColor(Color.parseColor("#e9e9e9")); 
    textViewMessage.setTextSize(TypedValue.COMPLEX_UNIT_DIP, getResources().getDimension(R.dimen.main_stripe_small_text)); 

    return textViewMessage; 
} 

这里是(使用tableLayout)我的片段表行吧:

<TableRow 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingTop="@dimen/main_stripe_padding_top" 
    android:paddingBottom="@dimen/main_stripe_padding_bottom" 
    android:layout_marginBottom="@dimen/main_stripe_margin_bottom" 
    android:gravity="center_vertical" 
    android:layout_gravity="center_vertical" 
    android:background="#424242"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:layout_span="2" 
     android:gravity="right" 
     android:paddingLeft="@dimen/main_stripe_text_padding_left" 
     android:paddingRight="@dimen/main_stripe_text_padding_right" 
     android:orientation="horizontal" 
     android:id="@+id/linearLayoutStripe"> 
    </LinearLayout> 

    </TableRow> 

任何想法?

TextView.setGravity(...)将文本的重力设置在您的TextView的范围内。由于所涉及的TextView的垂直高度为wrap_content,因此视图的边界始终是内容的高度。

如果将TextView的高度设置为match_parent,并且保持现有重力设置,则TextView中的文本应该在其父布局中垂直居中显示。

+0

谢谢你的回应。我试过:'textViewMessage.setLayoutParams(LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));' 但是,这是发生了什么(抱歉的外部链接):https:// dl-web。 dropbox.com/get/Camera%20Uploads/2014-01-30%2016.09.39.png?_subject_uid=99305133&w=AAAGpTu_QjGqACwiwExyXOMiGEkGl2scSSLDUYrccAartw – user3178137

+0

嗯,你的链接不适合我。 – Yjay

+0

通过在fragment中为linear_layout添加重力参数来修复它:) – user3178137