将图像置于动态生成的TextView左侧的问题

时间:2015-07-29 07:41:29

标签: java android textview android-linearlayout

我已动态创建TextView并将其添加到线性布局中。 TextView应该在其左侧有一个图标。我添加了图标,希望TextView位于中心。

代码:

TextView valueTV = new TextView(getContext());
        valueTV.setText(richPost.getPostCreateDate());
        valueTV.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_launcher, 0, 0, 0);
        valueTV.setGravity(Gravity.CENTER);
        llInner.addView(valueTV);

输出:

output result

我希望图像在文本之前,并希望消除它们之间的巨大差距。文本位于正确的位置,我希望图像在文本旁边居中。我哪里错了?我该怎么办?

2 个答案:

答案 0 :(得分:2)

首先,让yoúrTextView将其内容添加到您的代码中来包装其内容:

valueTV.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

此外,要使LiniarLayout中的图标和文本居中,您可以通过将其添加到LinearLayout来实现:

yourLinearLayout.setGravity(Gravity.CENTER_HORIZONTAL);
yourLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

答案 1 :(得分:0)

这可能是由TextView布局参数引起的。在我看来,在你的情况下,TextView的宽度为match_parent,因此drawableLeft位置由LinearLayout的左侧定义。

这是感受差异的简单例子

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:drawableLeft="@drawable/ic_send_white_24dp"
    android:drawablePadding="8dp"
    android:text="some text"/>

</LinearLayout>

并尝试match_parent宽度为TextView

的相同布局