将图像放在动态生成的 TextView 左侧的问题
Issues placing image at the left of TextView generated dynamically
我动态创建了一个 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);
输出:
我希望图像位于文本之前,并希望消除两者之间的巨大差距。文字在适当的位置,我希望图像在文字旁边居中。我哪里错了?我该怎么办?
首先,通过将以下代码添加到您的代码中,使您的 TextView 包装其内容:
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));
这可能是由 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
的相同布局
我动态创建了一个 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);
输出:
我希望图像位于文本之前,并希望消除两者之间的巨大差距。文字在适当的位置,我希望图像在文字旁边居中。我哪里错了?我该怎么办?
首先,通过将以下代码添加到您的代码中,使您的 TextView 包装其内容:
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));
这可能是由 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