【问题标题】:How to align this textView to center vertically?如何将此 textView 对齐到垂直居中?
【发布时间】:2014-02-23 00:01:32
【问题描述】:

好的,我有这个问题:

我快要疯了,因为我已经尝试找到这个问题的答案大约 3 个小时了。 无论如何,我想将第一个 textView(如图所示)对齐到垂直居中。 我正在以编程方式创建这些文本视图(无需问为什么,我只需要)。 代码:

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>

有什么想法吗?

【问题讨论】:

    标签: android xml textview vertical-alignment


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。我试过了:textViewMessage.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); 但这就是发生的事情(对不起外部链接):dl-web.dropbox.com/get/Camera%20Uploads/…
    • 通过在片段中添加线性布局的重力参数来修复它:)
    猜你喜欢
    • 2014-02-21
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2016-09-01
    • 2012-07-05
    • 2013-09-10
    相关资源
    最近更新 更多