Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 14 дек 2018, 16:15

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 73 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 18 июн 2013, 01:27 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
ну? и что, вывелось на экран ровно то, что и заказывалось в xml-е..

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 июл 2013, 17:40 

Зарегистрирован: 11 мар 2013, 21:59
Сообщений: 20
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Подскажите пожалуйста! Мне нужно динамически создать 5 LinearLayout в цикле и потом к ним обращаться. Делал через setId(), но мне нужно изменять Layoutparams,а там только через имя :( :( :(


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 сен 2013, 10:59 

Зарегистрирован: 06 сен 2013, 06:29
Сообщений: 3
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
как программно добавить элемент в уже существующий layout? например при нажатии кнопки. нужно что-то обновить?
у меня ничего не получается.

TableLayout body1 = (TableLayout) findViewById(R.id.BodyTable1);

TableRow myrow1 = new TableRow(this);

LayoutParams rowParam1 = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

myrow1.setLayoutParams(rowParam1);
int RGB1 = android.graphics.Color.rgb(223, 223, 223);
myrow1.setBackgroundColor(RGB1);

LinearLayout.LayoutParams weightParams1 = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
weightParams1.weight = 1;

//LayoutParams lpView1 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

TextView tv11 = new TextView (this, null, R.style.BodyText);
tv11.setText("2,1");
tv11.setLayoutParams( weightParams1 );
tv11.setHeight(1);
myrow1.addView(tv11);
body1.addView(myrow1);


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 29 сен 2013, 23:38 
Аватар пользователя

Зарегистрирован: 28 сен 2013, 17:34
Сообщений: 450
Благодарил (а): 8 раз.
Поблагодарили: 110 раз.
Цитата:
NAZI

Напишите часть кода, если он выполниться успешно тогда и остальные команды добавите.
Код: [ Загрузить ] [ Скрыть ]
  1. TextView tv11 = new TextView(this);  
  2. tv11.setText("Это новая запись."); 
  3.          
  4. TableRow tableRow3 =(TableRow)findViewById(R.id.tableRow3);         
  5. int RGB1 = android.graphics.Color.rgb(223, 223, 223); 
  6. tableRow3.setBackgroundColor(RGB1); 
  7. tableRow3.addView(tv11) 
;
Данный код добавляет элемент TextView в TableRow (это строка в TableLayout).

Причем все остальные элементы созданы в main.xml т.е. не программным способом а через XML.
Код: [ Загрузить ] [ Скрыть ]
  1. protected void onCreate(Bundle savedInstanceState) { 
  2.         super.onCreate(savedInstanceState); 
  3.         setContentView(R.layout.main); 

_________________
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 дек 2013, 02:18 
Аватар пользователя

Зарегистрирован: 28 ноя 2013, 01:06
Сообщений: 3
Откуда: DC
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Цитата:
Обратите внимание, что для двух объектов View я использовал один объект LayoutParams - lpView. И если я теперь буду менять свойства
этого объекта, меняться будут оба View.

Есть основания полагать, что это неправда.
Думаю, что LayoutParams передаются по значению, а не по ссылке. Поэтому ничего не будет меняться.
Вот код и результат:

Код: [ Загрузить ] [ Скрыть ]
  1. Button btn = new Button (this); 
  2. btn.setText("Button1"); 
  3. linLayout.addView(btn, lpView); 
  4.          
  5. lpView.width = LayoutParams.MATCH_PARENT; 
  6.          
  7. Button btn2 = new Button (this); 
  8. btn2.setText("Button2"); 
  9. btn2.setLayoutParams(lpView); 
  10. linLayout.addView(btn2); 
  11.          
  12. lpView.width = 200; 
  13.          
  14. Button btn3 = new Button (this); 
  15. btn3.setText("Button3"); 
  16. linLayout.addView(btn3, lpView); 
  17.  
  18. btn.requestLayout(); 
  19. btn2.requestLayout(); 
  20. btn3.requestLayout(); 


Вложения:
sa0161.jpg
sa0161.jpg [ 22.99 KiB | Просмотров: 6008 ]

_________________
open your eyes
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 дек 2013, 15:22 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Phashik писал(а):
Цитата:
Обратите внимание, что для двух объектов View я использовал один объект LayoutParams - lpView. И если я теперь буду менять свойства
этого объекта, меняться будут оба View.

Есть основания полагать, что это неправда.

Да, некорректно у меня написано. Спасибо!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 31 май 2014, 14:18 
Аватар пользователя

Зарегистрирован: 02 май 2014, 13:13
Сообщений: 45
Откуда: Уфа
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
rezak90 писал(а):
button1.setId(12345);
в onClicke:
case 12345: и т.д.

Господа!
Подскажите, не является ли данный вариант задания id для View чреватым в будущем неизвестными последствиями?
Нужно ли стараться делать уникальные числа как делают с магнитными картами 324246000001, 324246000002, 324246000003 ... ?
Существуют какие-то принятые нормы для программного задания id ?

R.java
Код: [ Загрузить ] [ Скрыть ]
  1. public static final class id { 
  2.         public static final int action_bar=0x7f07001c; 
  3.         public static final int action_bar_activity_content=0x7f070014; 
  4.         public static final int action_bar_container=0x7f07001b;........ 

Я так понимаю в R.java мы уже никак id свежеиспеченного view-компонента не впихнем... но возможно есть рекомендации девелоп-сообщества ?

_________________
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 июн 2014, 23:33 

Зарегистрирован: 22 июн 2014, 22:36
Сообщений: 2
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Известно, что вышло обновление Eclipse ADT от Google, в котором помимо всего прочего появился файл layout/fragment_main.xml, а также в исходнике MainActivity.java появился подкласс PlaceholderFragment... Так вот, в связи с этим, не совсем понятно, как применить знания текущего урока к новой структуре.. В качестве ответа, я бы хотел получить исходный код MainActicity.java, пригодный для последнего обновления Eclipse ADT.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 июн 2014, 05:32 

Зарегистрирован: 30 апр 2014, 11:42
Сообщений: 180
Благодарил (а): 3 раз.
Поблагодарили: 44 раз.
ZumbiAzul

Если пока не понимаете что это такое и с чем это едят, после создания проекта удалите (или закомментируйте) в onCreate следующие строки:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.                 if (savedInstanceState == null) {
  2.                         getSupportFragmentManager().beginTransaction()
  3.                                         .add(R.id.container, new PlaceholderFragment()).commit();
  4.                 }


На все остальное (класс PlaceholderFragment, fragment_main.xml) можете не обращать никакого внимания, либо удалить, если оно вам мозолит глаза.
Когда в процессе обучения дойдете до фрагментов, тогда поймете что к чему.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 окт 2014, 11:06 

Зарегистрирован: 13 окт 2014, 13:00
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Проект создаю по уроку, но при добавлении
Код: [ Загрузить ] [ Скрыть ]
  1. LayoutParams linLayoutParam = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);  

вот такая ошибка:
Код: [ Загрузить ] [ Скрыть ]
  1. eclipse Description Resource Path Location Type Call requires API level 11 (current min is 10): new android.app.ActionBar.LayoutParams MainActivity.java /P0161_DynamicLayout/src/com/example/dynamiclayout line 18 Android Lint Problem 

мне нужно изменить нижний API? Но если Target стоит 2.3.3, то больше не поставить.
Спасибо!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 окт 2014, 12:12 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
target - это не нижний, а целевой

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 окт 2014, 21:20 

Зарегистрирован: 13 окт 2014, 13:00
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Да да, все правильно! Не знал как написать точнее.
Но если в уроке написано 2.3.3 (API10),то должно работать? Но у меня не работает с такой ошибкой, как указано выше.
Подскажите пожалуйста....
Спасибо


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 окт 2014, 13:47 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
pal2 писал(а):
Да да, все правильно! Не знал как написать точнее.
Но если в уроке написано 2.3.3 (API10),то должно работать? Но у меня не работает с такой ошибкой, как указано выше.
Подскажите пожалуйста....
Спасибо


new android.app.ActionBar.LayoutParams MainActivity.java Попробуй заменить ActionBar.LayoutParams на что-нибудь другое, например, LinearLayout.LayoutParams

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 дек 2014, 22:59 

Зарегистрирован: 12 дек 2014, 22:50
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте. Для закрепления урока решил сделать некий тест:
стартовая страница - картинка, под ней вопрос, еще снизу 4 кнопки с вариантами ответов.
при нажатии на кнопку весь экран должен перерисоваться для нового вопроса.

Вобщем, первая перерисовка удалась, но метод onCreate всего один, и повторное применение слушателей для новых кнопок ввел оменя в ступор. Можно это как-то сделать вообще?

зы: так же новая картинка почему-то на весь экран по ширине и не меняет никак размер, даже при присвоении ей размеров или констант lp1, lp2... можно это исправить?
зы2: часто текст из текствоого поля так же почему-то идет ниже кнопок (кнопки его перекрывают), хотя даже места под кнопками свободного - полно... в чем может быть проблема?

Код: [ Загрузить ] [ Скрыть ]
  1. import android.os.Bundle; 
  2. import android.support.v7.app.ActionBarActivity; 
  3. import android.view.Menu; 
  4. import android.view.MenuItem; 
  5. import android.view.View; 
  6. import android.view.View.OnClickListener; 
  7. import android.view.ViewGroup.LayoutParams; 
  8. import android.widget.Button; 
  9. import android.widget.ImageView; 
  10. import android.widget.LinearLayout; 
  11. import android.widget.TextView; 
  12.  
  13.  
  14. public class MainActivity extends ActionBarActivity implements OnClickListener{ 
  15.      
  16.      
  17.      Button button1; 
  18.      Button button2; 
  19.      Button button3; 
  20.      Button button4; 
  21.      TextView editText1; 
  22.      ImageView imageView1; 
  23.      int bal=0; 
  24.      LinearLayout ll1; 
  25.       
  26.      int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT; 
  27.  
  28.     @Override 
  29.     protected void onCreate(Bundle savedInstanceState) { 
  30.         super.onCreate(savedInstanceState); 
  31.         setContentView(R.layout.main); 
  32.          
  33.         button1 = (Button) findViewById(R.id.button1); 
  34.         button1.setOnClickListener(this); 
  35.         button2 = (Button) findViewById(R.id.button2); 
  36.         button2.setOnClickListener(this); 
  37.         button3 = (Button) findViewById(R.id.button3); 
  38.         button3.setOnClickListener(this); 
  39.         button4 = (Button) findViewById(R.id.button4); 
  40.         button4.setOnClickListener(this); 
  41.         editText1 = (TextView) findViewById(R.id.editText1); 
  42.         imageView1 = (ImageView) findViewById(R.id.imageView1); 
  43.         ll1 = (LinearLayout) findViewById(R.id.ll1); 
  44.          
  45.          
  46.     } 
  47.  
  48.      
  49.     @Override 
  50.     public void onClick(View v) { 
  51.         // TODO Auto-generated method stub 
  52.          
  53.         switch (v.getId()) { 
  54.         case R.id.button1: 
  55.             ll1.removeAllViews(); 
  56.         break; 
  57.         case R.id.button2: 
  58.             ll1.removeAllViews(); 
  59.           break; 
  60.         case R.id.button3: 
  61.             ll1.removeAllViews(); 
  62.             bal=bal+1; 
  63.           break; 
  64.         case R.id.button4: 
  65.             ll1.removeAllViews(); 
  66.           break; 
  67.         } 
  68.  
  69.         LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams( 
  70.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
  71.         LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams( 
  72.                 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
  73.          
  74.          
  75.         ll1.setOrientation(LinearLayout.VERTICAL); 
  76.         ImageView imageView1 = new ImageView(this);     
  77.         imageView1.setImageResource(R.drawable.kv02); 
  78.         imageView1.setMaxHeight(220); 
  79.         imageView1.setMaxWidth(240); 
  80.         ll1.addView(imageView1); 
  81.         TextView textView1 = new TextView(this); 
  82.         textView1.setHeight(26); 
  83.         textView1.setText("ххххх?"); 
  84.         ll1.addView(textView1, lp2); 
  85.  
  86.         LinearLayout ll2 = new LinearLayout(this); 
  87.         Button button1 = new Button(this); 
  88.         button1.setText("1"); 
  89.         ll2.addView(button1); 
  90.         Button button2 = new Button(this); 
  91.         button2.setText("2"); 
  92.         ll2.addView(button2); 
  93.          
  94.         LinearLayout ll3 = new LinearLayout(this); 
  95.         Button button3 = new Button(this); 
  96.         button3.setText("3"); 
  97.         ll3.addView(button3); 
  98.         Button button4 = new Button(this); 
  99.         button4.setText("4"); 
  100.         ll3.addView(button4); 
  101.          
  102.         ll1.addView(ll2, lp2); 
  103.         ll1.addView(ll3, lp2); 
  104.          
  105.     
  106.          
  107.          
  108.     } 
  109.      
  110.  
  111.     @Override 
  112.     public boolean onCreateOptionsMenu(Menu menu) { 
  113.         // Inflate the menu; this adds items to the action bar if it is present. 
  114.         getMenuInflater().inflate(R.menu.main, menu); 
  115.         return true; 
  116.     } 
  117.  
  118.     @Override 
  119.     public boolean onOptionsItemSelected(MenuItem item) { 
  120.         // Handle action bar item clicks here. The action bar will 
  121.         // automatically handle clicks on the Home/Up button, so long 
  122.         // as you specify a parent activity in AndroidManifest.xml. 
  123.         int id = item.getItemId(); 
  124.         if (id == R.id.action_settings) { 
  125.             return true; 
  126.         } 
  127.         return super.onOptionsItemSelected(item); 
  128.     } 
  129.  
  130.  
  131.  


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 дек 2014, 13:43 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
А почему просто не менять текст\картинку по событию ( например по клику ). Можно делать кнопки невидимыми (invisible или gone) если нужно изменить кол-во вариантов. В случае совсем радикальных отличий между вопросами можно использовать фрагменты. У картинок есть режимы заполнения типа растянуть, замостить и т.д. погуглите.

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 дек 2014, 15:02 

Зарегистрирован: 12 дек 2014, 22:50
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
может потому что все звучит непонятно...
проблема у меня с пониманием в том, что метод onClick всего один... и вот как в него вписать все варианты нажатий одной и той же кнопки, но при разных вопросах... что бы кнопка каждый раз выводила новый экран...
есть идея сделать через цикл, задав всем текстовым значениям и картинкам константы с номерами экрана, но опять же, застрял на том как вызывать определенную константу с нужным индексом. Хз как оно в методе onClick будет себя вести, правда...
еще была идея делать для каждого нового вопроса новый main-клас, но по сути будет создаваться новая програма, и это слишком мудрено получится, кажется...


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 дек 2014, 16:51 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
какой еще цикл? там же SWITCH Организовывается! в уроках же есть это.

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 дек 2014, 16:56 

Зарегистрирован: 12 дек 2014, 22:50
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Foenix писал(а):
какой еще цикл? там же SWITCH Организовывается! в уроках же есть это.

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

у меня же - кнопка сохраняется, и после каждого последующего нажатия по ней - должна делать другое действие


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 дек 2014, 18:25 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
что значит "новый экран"? наверняка просто вьюшка, демонстрирующая вопрос. Зачем новый экран, если можно просто поменять содержимое соответствующей вьюшки на другое?
Используй скрины, чтоб показать что тебе действительно нужно.

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 дек 2014, 19:12 

Зарегистрирован: 12 дек 2014, 22:50
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
viewtopic.php?f=3&t=108&p=38204#p38187
вот тут я описал что хотелось бы сделать...

Foenix писал(а):
что значит "новый экран"? наверняка просто вьюшка, демонстрирующая вопрос. Зачем новый экран, если можно просто поменять содержимое соответствующей вьюшки на другое?
Используй скрины, чтоб показать что тебе действительно нужно.


Да, можно просто поменять картинку в ImageView, текст на кнопках-ответах и в самом вопросе.
НО, это получается сделать только 1 раз. код того что пробовал сделать по ссылке выше (экран, который делается после SWITCH аналогичен тому, что описан в main.xml)

изменения экрана прописал в методе onClick (изменнение самих значений может даже и лучше будет), но вот после этого как присвоить новые слушатели кнопкам и что бы элементам присваивались уже третие-...-двадцатые значения?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 73 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB