Макеты и кнопки - PullRequest
       36

Макеты и кнопки

0 голосов
/ 11 августа 2011
TableLayout relativeLayout = (TableLayout)findViewById(R.id.ll1);
        TableRow row =new TableRow(this); 
        Button button ;
        int counter = 0;

        for(int i = 0;i<=13;i++){
                counter++;
                button = new Button(this);
                button.setText(counter);


                row.addView(button);

            }

        relativeLayout.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        relativeLayout.computeScroll();             

XML-файл

<TableLayout android:id="@+id/ll1"  android:shrinkColumns="true"
        android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/button1"
        xmlns:android="http://schemas.android.com/apk/res/android"></TableLayout>

Но всякий раз, когда я выполняю свое приложение, оно просто перемещает мои кнопки в один ряд, и после 5 кнопок все кнопки уходят с экрана.я не хочу добавлять больше строк, так как я не хочу жестко кодировать что-либо в моем коде, например помещать некоторый код if (counter% 5 == 0), затем делать то и это.

Есть ли какие-либоДругой способ подсчитать ширину, если кнопки эквивалентны ширине экрана, сделать то или иное или любое другое значение, как любое свойство таблицы Layout, которое просто переносит содержимое строки?

Ответы [ 3 ]

0 голосов
/ 11 августа 2011

Вместо этого используйте FlowLayout:

http://nishantvnair.wordpress.com/2010/09/28/flowlayout-in-android/

Проект GIT:

https://gist.github.com/1073863

0 голосов
/ 11 августа 2011

Используя Contex метод getResources () , к которым вы можете получить доступ все ресурсы для пакета вашего приложения. Метод возвращает Ресурсы , и вы можете видеть здесь все доступные свойства.

0 голосов
/ 11 августа 2011

Да, есть способ получить точную ширину любого компонента в вашем приложении.Посмотрите на мой ответ на мой вопрос, заданный некоторое время назад здесь .Как видите, я создаю экземпляр объекта Paint, но в этом нет необходимости, если вы не хотите получить ширину самого текста.Однако вы должны использовать множитель плотности:

float scale = getContext().getResources().getDisplayMetrics().density;

. Он преобразует любую функцию, которая получает ширину компонента (в данном случае, вашу кнопку), в фактическую ширину пикселя на любых устройствах.Таким образом, вы получите ширину кнопки (с помощью вызова функции getWidth () для вашего объекта Button), а затем умножите ее на коэффициент масштабирования.

...