Java 将Gravity设置为TextView,背景可绘制图像无法编程
我寻找这个问题,但没有找到一个方便的答案。 我尝试将TextView动态添加到LinearLayout,但问题是setGravity不起作用。 这是我的代码:Java 将Gravity设置为TextView,背景可绘制图像无法编程,java,android,android-layout,Java,Android,Android Layout,我寻找这个问题,但没有找到一个方便的答案。 我尝试将TextView动态添加到LinearLayout,但问题是setGravity不起作用。 这是我的代码: TextView textView = new TextView(mContext); textView.setTextColor(Color.BLACK); textView.setText(colorKeyword(resources.getString(R.string
TextView textView = new TextView(mContext);
textView.setTextColor(Color.BLACK);
textView.setText(colorKeyword(resources.getString(R.string.tipsbutton_tooltip)));
textView.setTextSize(35);
textView.setTextScaleX(1.1f);
textView.setPadding(textViewPadding, textViewPadding, 0, textViewPadding);
textView.setTextAppearance(mContext, R.style.fontForTooltipsTexts);
textView.setGravity(Gravity.CENTER_VERTICAL);
textView.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
textView.setBackgroundResource(R.drawable.tip_box);
tooltipView.setBackgroundResource(android.R.color.transparent);
ImageView arrowView = new ImageView(mContext);
arrowView.setImageResource(R.drawable.tip_arrow_down);
arrowView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
arrowView.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tooltipView.setOrientation(LinearLayout.VERTICAL);
tooltipView.addView(textView);
tooltipView.addView(arrowView);
如果我将textview的布局高度设置为与父级匹配,重力会根据需要将文本水平居中,但副作用是所有背景/textview区域都拉伸到父级高度。
我现在可以肯定的是,这是一个与它们的排列顺序有关的问题。这可能是我错过做的事情
我将此用于家长:
LinearLayout tooltipView = new LinearLayout(mContext);
tooltipView.setOrientation(LinearLayout.VERTICAL);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
tooltipView.setLayoutParams(lp);
tooltipView.measure(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
tooltipView.setGravity(Gravity.CENTER_VERTICAL);
我试图从一个已经添加了背景的布局中进行充气,但我遇到了同样的问题
文本视图的高度应与背景图像的高度相匹配
谢谢你的建议
setGravity
按预期工作,使用hierarchyviewer查看视图边界,您将确保它工作正常。尝试将Gravity.CENTER改为Gravity.CENTER_垂直,以查看可能有助于解决问题的任何效果。我怀疑您误解了LayoutParams的工作方式。父视图组为其子视图提供其版本的LayoutParams。假设要将文本视图居中放置在线性布局中。1.创建线性布局
和文本视图
。2.创建新的LinearLayout.LayoutParams(包裹内容、包裹内容、重心)。3. <代码>线性布局。添加(文本视图、布局参数)。