i tried two way to set width of the EditText, but i got no proper result. the xml file contains:
<TextView
android:id="@+id/textView1"
style="@android:style/Widget.AutoCompleteTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="@string/classname"
android:textSize="25sp" />
<TextView
android:id="@+id/textView2"
style="@android:style/Widget.AutoCompleteTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="@string/teacher"
android:textSize="25sp" />
the first way:
TextView tw1 = (TextView) findViewById(R.id.textView1);
TextView tw2 = (TextView) findViewById(R.id.textView2);
tw2.setLayoutParams(new LinearLayout.LayoutParams(tw1.getLayoutParams().width, LinearLayout.LayoutParams.WRAP_CONTENT));
the second way:
TextView tw1 = (TextView) findViewById(R.id.textView1);
TextView tw2 = (TextView) findViewById(R.id.textView2);
tw2.setWidth(tw1.getWidth());
While the first code does not work at all, the second code gives an unrelated result. What is my mistake or what is the correct way of doing this?
As @Amin said, layout width was zero when using getWidth in the onCreate or onStart or onResume methods. I found the solution like that:
tw1.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
tw1.getViewTreeObserver().removeOnGlobalLayoutListener(this);
int theWidth = tw1.getWidth();
tw2.setWidth(theWidth);
}
});
This method is called when the view object's properties change. For this problem it is a good solution i think.