Получение размеров экрана андроида - PullRequest
0 голосов
/ 22 января 2012

В основном я пытаюсь сделать заявку на планшеты.Там будет множество виджетов, добавленных и удаленных пользователем в макете таблицы.Он должен быть динамическим, чтобы размеры виджетов различались в зависимости от ширины и высоты макета таблицы.

Для этого я пытаюсь создать сетку 3x3 в таблице.Как я уверен, вы уже догадались, что каждый квадрат имеет ширину и высоту таблицы в 33%.

Вот что я получил:

DisplayMetrics metrics;
int totalScreenSizeH; 
int totalScreenSizeW;

TableLayout contentTable;
LinearLayout contentLayout;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //Get the UI detail
    metrics  = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    totalScreenSizeH = metrics.heightPixels;
    totalScreenSizeW = metrics.widthPixels;



    contentTable=(TableLayout)findViewById(R.id.tableLayout1);
    contentLayout=(LinearLayout)findViewById(R.id.contentLayout);

    int tableWidth =contentTable.getWidth();
    int tableHeight=contentTable.getHeight();

    int layoutWidth=contentLayout.getWidth();
    int layoutHeight=contentLayout.getHeight();

    Log.v("Table Width",""+tableWidth);
    Log.v("Table Height",""+tableHeight);

    Log.v("Layout Width",""+layoutWidth);
    Log.v("Layout Height",""+layoutHeight);

Так что просто объясним это немного лучше.LinearLayout содержит табличное расположение, которое имеет 3 строки таблицы.Я полагал, что смогу получить их ширину и высоту, но по какой-то причине оба возвращаются как 0 в размере.Когда у меня есть ширина и высота, я собираюсь сохранить эту переменную и создать виджеты на основе этих переменных / 3.

Итак, 2 вопроса:

1: это правильный путь?обрабатывать виджеты динамического размера.Или это неправильный способ решения такой проблемы?

2: Есть идеи, почему все эти 2-4 переменные возвращаются как 0?

Ответы [ 2 ]

1 голос
/ 22 января 2012

Я бы посоветовал не делать идеальные по пикселям дизайны на Android из-за огромного количества разрешений и плотностей, с которыми вам приходится иметь дело.

Я бы посоветовал взглянуть на android:layout_width/height="wrap_content" и <a href="/4024872/chto-oznachaet-android-layoutweight">android:layout_weight="INTEGER"</a>это поможет вам сделать плавающий 3х3.Вы также можете достичь этого с <a href="http://developer.android.com/resources/tutorials/views/hello-gridview.html" rel="nofollow noreferrer">GridView</a>

0 голосов
/ 22 января 2012

Я ссылался на источник в комментарии к OP, но для Grid 3x3 следуйте некоторым практикам, которые Роман сделал со своей собственной реализацией DashboardLayout (Apache License FTW).Он будет корректировать горизонтальное и вертикальное расстояние на экранах разных размеров: https://gist.github.com/882650.

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

...