2010-08-23 2 views
1

Я хочу показать EditText и Button в одной строке. Но размер кнопки фиксирован для некоторых пикселей. Я хотел бы получить ширину Button программно, так что я могу регулировать ширину EditText на изменение ориентации в вертикальный или горизонтальный моем файл XML выглядит следующим образомКак получить ширину кнопки в android

<LinearLayout 
    android:id="@+id/middleLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    > 
<EditText 
    android:layout_height="50px" 
    android:layout_width="wrap_content" 
    android:id="@+id/searchBox" 
    android:layout_marginTop="2px" 
    android:visibility="visible" 
    android:singleLine="true" 
    android:hint="Enter Zip Code, City &amp; State" 
    /> 
<Button 
    android:layout_height="wrap_content" 
    android:layout_width="20px" 
    android:id="@+id/searchBtn" 
    android:visibility="visible" 
    android:layout_marginTop="3px" 
    android:text="Search" 
    /> 
</LinearLayout> 

Я его расчетом на следующем код.

searchBox = (EditText) findViewById(R.id.searchBox); 
searchbutton = (Button) findViewById(R.id.searchBtn); 
int searchIconWidth = searchbutton.getWidth(); 
searchBox.setWidth(getting_screen_width() - searchIconWidth); 

для расчета ширины экрана я использовал следующие

private int getting_screen_width() 
    { 
    DisplayMetrics dm = null; 
    dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    String width = ""+dm.widthPixels ; 
    dm = null; 
     return Integer.parseInt(width); 
    } 

Но когда я запускаю выше код, чем EditText занимает всю ширину & кнопку Поиск не отображается. Какова может быть проблема с шириной кнопки в пикселях.

Пожалуйста, помогите мне. Заранее спасибо.

+0

Я думаю, если ширина проблемы. установить одно и то же значение для обоих из них. – Praveen

ответ

0

Возможно, вы захотите использовать другой макет для пейзажа. Проверьте this link.

В принципе, у вас может быть второй макет для пейзажа, создающий новую папку в пути /res/ под названием layout-land. Поместите там свой новый макет с тем же именем, и Android позаботится обо всем остальном.

+0

Вы правы, но моя проблема в том, что когда я пытаюсь напечатать ширину кнопки, она показывает мне 0 в Logcat. поэтому EditText принимает полный экран. Меня интересует ширина, указанная в xml, и эта кнопка обрабатывается как 0px в программе. – Ashay

+0

Где вы размещаете эту строку журнала? – Macarse

+0

Я печатаю значение переменной searchIconWidth. Надеюсь, что в моей отладочной части не размещены здесь. Log.d ("ButtonWidth", "" + searchIconWidth); Но вы можете разместить после этой строки int searchIconWidth = searchbutton.getWidth(); – Ashay

Смежные вопросы