gpt4 book ai didi

java - Android - 以编程方式在 EditText 中居中文本

转载 作者:搜寻专家 更新时间:2023-11-01 08:46:50 25 4
gpt4 key购买 nike

我正在编写一个包含 EditText 的自定义 Android View 。我希望能够通过 Java 代码使文本垂直居中,但它不起作用。

My failure

如上图所示,文本没有垂直居中。我将 EditText 背景设置为浅红色,以便您可以看到它的布局边界。我在它的左侧有一个通过 XML 代码呈现的 EditText,它工作正常。

如何让文本正确显示?

.

这是我的中间 EditText 代码:

txtSearch = new EditText(context);
txtSearch.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1f));
txtSearch.setGravity(Gravity.CENTER_VERTICAL);
txtSearch.setBackgroundColor(context.getResources().getColor(R.color.nowl_red_transparent_12));//Color.TRANSPARENT);
txtSearch.setHint("Search");
txtSearch.setHintTextColor(context.getResources().getColor(R.color.text_hint));
txtSearch.setInputType(InputType.TYPE_CLASS_TEXT);
txtSearch.setMaxLines(1);
txtSearch.setHorizontalScrollBarEnabled(true);
txtSearch.setTypeface(Typeface.create("sans-serif-light", Typeface.NORMAL));
txtSearch.setTextSize(16f);
txtSearch.setEllipsize(TextUtils.TruncateAt.END);
txtSearch.setText("Y u no center");
container.addView(txtSearch);

下面是左边正确呈现的 EditText 的代码:

<EditText
android:layout_width="50dp"
android:layout_height="match_parent"
android:background="@color/transparent"
android:hint="test" />

我几乎尝试了一切。我使用了 setGravity(Gravity.CENTER_VERTICAL),删除/添加了属性,等等。没有任何效果。这是 Android 的错误还是我在这里遗漏了什么?在 UI 预览和实际 Android 设备中看起来也是这样。

最佳答案

从外观上看,它确实在某种程度上对齐了。如果它是顶部对齐的,它将位于最顶部,可能有 1dp 的边距。如果它底部对齐,它也会那么高。

我在您的原始图像上方画了一个绿色框,以显示我认为它相对于什么对齐。

Padding box

鉴于您已将原始背景替换为自定义颜色,Android 可能会从您的上下文对象或系统默认值中提取一些意外的默认设置并添加填充(尽管我不记得 Android 有任何默认填充)。您是否尝试过 txtSearch.setPadding(0, 0, 0, 0) 以防万一?

关于java - Android - 以编程方式在 EditText 中居中文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27454535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com