如何将文本视图与上面的小部件对齐?

时间:2011-10-04 05:12:52

标签: android layout

我的用户界面包含两个元素:顶部的按钮和按钮下方的文本视图。按钮的宽度设置为“wrap_content”,因此当我在运行时将不同的文本设置为按钮时,它将更改其宽度。我想总是让textview与按钮对齐(具有相同的宽度),尤其是首先加载UI。

我尝试在 onGlobalLayout 事件中获取按钮的宽度并设置textview的宽度,但似乎无效。任何人都可以帮助我吗?

更新

我想我可能过度简化了我的问题。真正的用户界面有许多由代码生成的小部件(我的问题中的按钮和textview)。所以我不能使用XML来定义它们。并且由于UI未完全加载,我无法使用 getWidth()在对齐文本视图时获取按钮的实际宽度。

3 个答案:

答案 0 :(得分:1)

我认为您应该使用Android LayoutParams。

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

在onCreate或您将文本设置为按钮的代码中。 设置文本int按钮后,您应该使用按钮的布局参数设置textview = width按钮的宽度。

答案 1 :(得分:1)

以XML格式化此布局,使用RelativeLayout作为Button和TextView的容器。

然后,对于TextView,您将指定alignment:

android:layout_alignLeft="@+id/button1" 
android:layout_alignRight="@+id/button1"

因此它的左侧和右侧都与您的按钮对齐。

注意:您也可以使用RelativeLayout.LayoutParams从java代码中创建相同内容,但它比使用XML更复杂。

答案 2 :(得分:0)

如果你喜欢在代码中工作,这是关于Button和TextView具有相同宽度的一个示例:

public class MainActivity extends Activity {
    Button mButton;
    TextView mText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        

        mButton = (Button)findViewById(R.id.button);
        mText = (TextView)findViewById(R.id.text);

        updateUI();
    }

    public void updateUI() {
        int wButton = mButton.getWidth();
        int wText = mText.getWidth();

        if(wButton < wText) {
            mButton.setWidth(wText);
        } else {
            mText.setWidth(wButton);
        }
    }
}

嗯,缺点是每次更新任一控件的文本时都需要调用updateUI()。