Я бы порекомендовал вам использовать макет, определенный в xml, чтобы определить, как объекты будут выглядеть на экране. Когда вы определяете макеты в XML, вы можете использовать логическую единицу dp, которая является интервалом в соответствии с разрешением экрана. Вот так (представьте, что вы определили это в файле с именем button_layout.xml
):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="4dp">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16.0sp" />
<Button android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"/>
</LinearLayout>
Обратите внимание, что единицы измерения dp
и dip
являются синонимами.
Тогда, если вам нужно добавить еще одну кнопку вместе со всеми этими элементами программно, вы в основном делаете что-то вроде:
LayoutInflater inflater;
inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout linearLayout = (TableLayout) inflater.inflate(R.id.button_layout, null);
linearLayout.findViewById(R.id.line_id).setText("One"); // Or two or three as you wish
main_activity_layout.addView(linearLayout); //adding yet another button
Это только иллюстрация того, как вы используете макет. Вы можете определить макет с нужными вам свойствами, а также программно установить все индивидуальные свойства. Самое главное, что:
- Вам легче разобраться в макете
- Вы указываете поля, отступы и т. Д. В относительных единицах dp
.
РЕДАКТИРОВАТЬ : Если вы действительно настаиваете на том, чтобы это было сделано в коде, здесь - это то, как вы указываете dp программно. Тем не менее, я бы порекомендовал использовать макет как можно больше.