我的用户界面包含两个元素:顶部的按钮和按钮下方的文本视图。按钮的宽度设置为“wrap_content”,因此当我在运行时将不同的文本设置为按钮时,它将更改其宽度。我想总是让textview与按钮对齐(具有相同的宽度),尤其是首先加载UI。
我尝试在 onGlobalLayout 事件中获取按钮的宽度并设置textview的宽度,但似乎无效。任何人都可以帮助我吗?
更新
我想我可能过度简化了我的问题。真正的用户界面有许多由代码生成的小部件(我的问题中的按钮和textview)。所以我不能使用XML来定义它们。并且由于UI未完全加载,我无法使用 getWidth()在对齐文本视图时获取按钮的实际宽度。
答案 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()。