0

我有一个包含一些 TextViews 的 LinearLayout。我设置

android:gravity="center_horizontal"

父布局和结果如下所示(对于 N=2):

在此处输入图像描述

我希望它看起来像

在此处输入图像描述

换句话说,我希望它们向左对齐。更准确地说,我的计划是找到最长的 TextView,然后将其他 TextViews 对齐到该视图的左边界。谁能解释我在我的 Activity 的哪个回调中可以做到这一点?我试过

public void onCreate(Bundle savedInstanceState)

textView.getWidth()

(我用来查找最长的 TextView)为所有 textViews 返回 0。第二个问题是:我应该使用什么方法将 TextView 向左移动“n”个像素?

4

1 回答 1

1

嗯,看起来最简单的方法就是将 LinearLayout 嵌入到另一个 Layout 中,而不是尝试手动完成。

可能的方法:

RelativeLayout with gravity:center
  Linear Layout with gravity:left and wrap_content as size
    TextView1, wrap_content
    TextView2 
    ...

这应该可以解决问题!

顺便说一句,如果您尝试对布局做任何事情,覆盖 onCreate 将永远无法工作!只有在绘图框架完成一个“onMeasure”和一个“onLayout”循环后,才会定义布局。确保这一点的(hacky)方法是简单地推迟该代码(例如,使用“View.postDelayed(..)”。更好的方法是在 onCreate 方法中添加一个自定义的、不可见的视图。当它第一次调用onDraw,你可以确定至少第一个布局周期已经完成,所有的视图都应该返回它们的实际大小。

在移动视图方面:你看过“View.setOffset”吗?

于 2012-09-12T15:48:36.457 回答