Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
vlad4475
4 / 4 / 0
Регистрация: 14.07.2015
Сообщений: 36
#1

Как программно изменить - Программирование Android

31.03.2016, 19:31. Просмотров 306. Ответов 1

Здравствуйте! Не так давно учусь программировать под Андроид и столкнулся с такой проблемой:

Я хочу программно создать n кнопок и расположить их так, что бы они все помещались на экране в строчку (с помощью XML делать так умею, просто ставил width = 0, weight = 1 у всех кнопок). Но с динамическими кнопками такое не получается. Во-первых button.setWidth(0); (или даже button.setWidth(1) не даёт эффекта вообще, а weight я установить вообще не могу.

Долго искал, нашёл, что нужно делать через LayoutParams; button.setLayoutParams(params); Но когда я прописываю button.setLayoutParams(params);, то кнопки вообще исчезают...

Вот сам код:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.example.myapp;
 
import android.app.Activity;
import android.os.Bundle;
import android.text.Layout;
import android.util.StringBuilderPrinter;
import android.view.ViewDebug;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;
 
import java.lang.annotation.Annotation;
 
public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        GoWork();
    }
 
    void GoWork() {
        TableRow tableRow = (TableRow) findViewById(R.id.Row1);
        //tableRow.setLayoutParams(new TableLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(50, 50);
        for (int j = 0; j < 6; j++) {
            Button button = new Button(this); //Вот тут создаю свои кнопки 
            button.setText("" + j);
           // button.setWidth(2); - Вообще не работает
            [COLOR="Red"]button.setLayoutParams(params); //Когда активирую, то кнопки вообще не отображаются [/COLOR]
            tableRow.addView(button, j);
        }
 
    }
}


И вот что у меня в XML творится:

Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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="match_parent"
              android:orientation="vertical">
 
    <TableLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <TableRow
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/Row1">
        </TableRow>
    </TableLayout>
</LinearLayout>


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


Подскажите пожалуйста, что я не так делаю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2016, 19:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как программно изменить (Программирование Android):

Как программно изменить textview? - Программирование Android
Мне нужно изменить TextView на многострочный текст, используя переменную. . Пример ниже. String gtext = &quot;elements/123.txt&quot;; try...

Как программно изменить текст в TextView - Программирование Android
Как из MainNavigationActivity изменить текст в шапке меню? Там где текст @Android Studio@

Программно изменить обои - Программирование Android
Здравствуйте. Как программно изменить обои главного экрана ?

Программно изменить ширину LinearLayout - Программирование Android
Доброе время суток! Есть галерея. &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;RelativeLayout...

Программно изменить размер ImageView - Программирование Android
public void displeisize() { DisplayMetrics displaymetrics = getResources().getDisplayMetrics(); int...

Изменить процент зарядки батареи программно - Программирование Android
Привет. Люблю я не стандартные вопросы задавать. У знакомого сломалась зарядка на планшете и видимо коротнула, теперь батарею заряжай...

1
vlad4475
4 / 4 / 0
Регистрация: 14.07.2015
Сообщений: 36
31.03.2016, 20:33  [ТС] #2
Ужасно тупанул, но вдруг кому понадобится.. Вот как исправил:
Дело в том, что я использовал
Java
1
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(50, 50);
А надо было именно TableRow
Java
1
TableRow.LayoutParams params =  new TableRow.LayoutParams(50, 50);
Извините за беспокойство.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2016, 20:33
Привет! Вот еще темы с ответами:

Изменить свойства программно созданного элемента - Программирование Android
Проблема. Есть карта на ней маркеры список имен маркеров можно получить layers.get(i).toString() перебрав в цикле Теперь зная имена...

Не могу изменить высотку и ширину Image программно - Программирование Android
На экране есть компонент ImageView, в него загружается картинка из drawable(R.drawable.image_1). Как изменить width и height этой картинки?...

Как программно удалить кнопку которую программно создал но только если она уже существует - Программирование Android
Есть ScrollView в котором много компонентов,чтоб не выводить сразу все решил выводить по 10 штук и снизу пихать кнопку &quot;еще&quot;,эту самую...

Как получить данные из EditText, созданного программно, или как узнать ID элемента? - Программирование Android
Всем здрасте и с Новым годом! Суть вопроса: Как получить значение, введенное пользователем в EditText, созданного программно или через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru