【问题标题】:How to align text view with above widget?如何将文本视图与上面的小部件对齐?
【发布时间】:2011-11-30 09:48:38
【问题描述】:

我的 UI 包含两个元素:顶部的按钮和按钮下方的文本视图。按钮的宽度设置为“wrap_content”,所以当我在运行时为按钮设置不同的文本时,它会改变它的宽度。我希望始终让 textview 与按钮对齐(具有相同的宽度),尤其是首先加载 UI。

我试图在 onGlobalLayout 事件中获取按钮的宽度并设置 textview 的宽度,但它似乎不起作用。谁能帮帮我?

更新:

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

【问题讨论】:

    标签: android layout


    【解决方案1】:

    我认为你应该使用 Android LayoutParams。

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

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

    【讨论】:

      【解决方案2】:

      在 XML 中制作此布局,使用 RelativeLayout 作为 Button 和 TextView 的容器。

      然后为 TextView 指定对齐方式:

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

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

      注意:你也可以使用RelativeLayout.LayoutParams从java代码中做同样的事情,但它比使用XML更复杂。

      【讨论】:

        【解决方案3】:

        如果您喜欢编写代码,这是一个关于 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()。

        【讨论】:

        • 感谢您的代码,@xjaphx。但是我真正的 UI 有很多由代码生成的小部件。我无法使用您的方式获取小部件的宽度,因为当我尝试对齐这些小部件时 UI 并未完全加载。
        猜你喜欢
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-11
        相关资源
        最近更新 更多