в этом сообщении нет вопроса, да? Минуты три потребовалось чтобы это понять)Fynjy писал(а):Доброго вечера, девелоперы! Выполнив урок, решил немного его дополнить)) Ведь когда нажимаешь кнопку "очистить экран", то текст в поле "editText" не исчезает, а мне кажется, что это неправильно. И поэтому я сделал небольшую приписочку
case R.id.btnClear:
llMain.removeAllViews();
Toast.makeText(this, "Удалено", Toast.LENGTH_SHORT).show();
etName.setText("");
break;
Урок 17. Создание View-компонент в рабочем приложении
Re: Урок 17. Создание View-компонент в рабочем приложении
Re: Урок 17. Создание View-компонент в рабочем приложении
Вопрос не подразумевался, я сделал крохотное дополнение к программе)klblk писал(а):в этом сообщении нет вопроса, да? Минуты три потребовалось чтобы это понять)Fynjy писал(а):Доброго вечера, девелоперы! Выполнив урок, решил немного его дополнить)) Ведь когда нажимаешь кнопку "очистить экран", то текст в поле "editText" не исчезает, а мне кажется, что это неправильно. И поэтому я сделал небольшую приписочку
case R.id.btnClear:
llMain.removeAllViews();
Toast.makeText(this, "Удалено", Toast.LENGTH_SHORT).show();
etName.setText("");
break;
Re: Урок 17. Создание View-компонент в рабочем приложении
Всем привет! Второй день уже лопачу интернет.
Есть программно заданная Радиогруппа и массив Радиокнопок к нему. Как мне в этом случае задать setOnCheckedChangeListener? (с примером)
Заранее спасибо!
Есть программно заданная Радиогруппа и массив Радиокнопок к нему. Как мне в этом случае задать setOnCheckedChangeListener? (с примером)
Заранее спасибо!
Re: Урок 17. Создание View-компонент в рабочем приложении
Здравствуйте.
Хочу программным способом построить такое окно.(фото)
Как я понял нужно создать такую же структуру как и в main.xml.
LinearLayout
TextView
LinearLayout1
Button1
Button2
LinearLayout2
Button3
Button4
не получается создать LinearLayout1, LinearLayout2.
Прошу подсказать или маленький примерчик.
Заранее спасибо.
Хочу программным способом построить такое окно.(фото)
Как я понял нужно создать такую же структуру как и в main.xml.
LinearLayout
TextView
LinearLayout1
Button1
Button2
LinearLayout2
Button3
Button4
не получается создать LinearLayout1, LinearLayout2.
Прошу подсказать или маленький примерчик.
Заранее спасибо.
- Вложения
-
- Экран с кнопками.JPG (75.56 КБ) 15793 просмотра
Re: Урок 17. Создание View-компонент в рабочем приложении
Добрый день!
Подскажите пожалуйста, как определить порядок перехода по полям editText по кнопке далее?
Подскажите пожалуйста, как определить порядок перехода по полям editText по кнопке далее?
-
- Сообщения: 6
- Зарегистрирован: 24 май 2014, 21:01
Re: Урок 17. Создание View-компонент в рабочем приложении
Спасибо. А если циклом создается 4 кнопки?)) то тогда как?damager82 писал(а): В конце урока добавил немного инфы про доступ к созданным компонентам.
Код: Выделить всё
for (int k = 0; k < 4; k++) {
Button btnNew = new Button(this);
btnNew.setText(name.get(k));
btnNew.setTextSize(16);
btnNew.setId(k);
lay1.addView(btnNew);
}
Re: Урок 17. Создание View-компонент в рабочем приложении
часть кода
case R.id.rbLeft:
btnGravity = Gravity.LEFT;
break;
излишняя, так как уже задана переменная выше int btnGravity = Gravity.LEFT; выше цикла. Т.е. часть кода не влияет на алгоритм работы.
ЗЫ: спасибо за уроки!
case R.id.rbLeft:
btnGravity = Gravity.LEFT;
break;
излишняя, так как уже задана переменная выше int btnGravity = Gravity.LEFT; выше цикла. Т.е. часть кода не влияет на алгоритм работы.
ЗЫ: спасибо за уроки!
Re: Урок 17. Создание View-компонент в рабочем приложении
код действительно не очень корректен ( хотя в контексте урока он отлично выполняет свою задачу и значения это не особо имеет ), но:sensay писал(а):часть кода
case R.id.rbLeft:
btnGravity = Gravity.LEFT;
break;
излишняя, так как уже задана переменная выше int btnGravity = Gravity.LEFT; выше цикла. Т.е. часть кода не влияет на алгоритм работы.
ЗЫ: спасибо за уроки!
1. переменная int btnGravity = Gravity.LEFT, должна объявляться с значением null, что повышает тестируемость, т.е. assert( btnGravity == null ) ? кнопка нажата : кнопка НЕ нажата
2. обязательно нужно указывать case R.id.rbLeft, чтобы не нарушать принцип целостности и не убивать читаемость кода
3. каждый switch обязательно должен содержать секцию default
P.S. но все это мало отношения к уроку имеет.
Re: Урок 17. Создание View-компонент в рабочем приложении
Присваивать примитиву - null??Очень интересно.код действительно не очень корректен ( хотя в контексте урока он отлично выполняет свою задачу и значения это не особо имеет ), но:
1. переменная int btnGravity = Gravity.LEFT, должна объявляться с значением null, что повышает тестируемость, т.е. assert( btnGravity == null ) ? кнопка нажата : кнопка НЕ нажата
2. обязательно нужно указывать case R.id.rbLeft, чтобы не нарушать принцип целостности и не убивать читаемость кода
3. каждый switch обязательно должен содержать секцию default
P.S. но все это мало отношения к уроку имеет.
Гораздо правильнее, объявить переменную gravity в блоке свич, соответственно в том-же самом блоке присвоить ее переменной gravity класса LayoutParams.К тому-же все = по дефолту новый View установится в левый угол.
Я бы вообще отказался от свичей, порой сложно разглядеть код, иф-ы гораздо более изящнее выглядят, хотя это уже дело вкуса.
Re: Урок 17. Создание View-компонент в рабочем приложении
у меня кнопка btnCreat не работает, кнопки не создаются, прога компилится и запускается без ошибок, и отображается все как надо, но при нажатии на кнопку Creat ничего не происходит, а вот Clear вроде работает, Toast выводит, думал у меня где то ошибка в коде так как я сам все набираю, скопировал с сайта весь код проекта и все равно тоже самое, в чем может быть проблема?
Re: Урок 17. Создание View-компонент в рабочем приложении
Помогите пожалуйста разобраться, ребята не молчите
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 17. Создание View-компонент в рабочем приложении
Как же угнетает, когда из нас делают экстрасенсов. Но поверьте, это не так, далеко не так! По фразам "у меня все не работает, скопировал проект, который у всех работает, а у меня не запускается. В чем может быть проблема?" мы нифига не понимаем, что у Вас там не работает. Это не код, это просто крик Вашей души.
Re: Урок 17. Создание View-компонент в рабочем приложении
вот код из MainActivityMikhail_dev писал(а):Как же угнетает, когда из нас делают экстрасенсов. Но поверьте, это не так, далеко не так! По фразам "у меня все не работает, скопировал проект, который у всех работает, а у меня не запускается. В чем может быть проблема?" мы нифига не понимаем, что у Вас там не работает. Это не код, это просто крик Вашей души.
Код: Выделить всё
package com.example.p0171_dynamiclayout2;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
LinearLayout llMain;
RadioGroup rgGravity;
EditText etName;
Button btnCreate;
Button btnClear;
int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
llMain = (LinearLayout) findViewById(R.id.llMain);
rgGravity = (RadioGroup) findViewById(R.id.rgGravity);
etName = (EditText) findViewById(R.id.etName);
btnCreate = (Button) findViewById(R.id.btnCreate);
btnCreate.setOnClickListener(this);
btnClear = (Button) findViewById(R.id.btnClear);
btnClear.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnCreate:
// Создание LayoutParams c шириной и высотой по содержимому
LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
wrapContent, wrapContent);
// переменная для хранения значения выравнивания
// по умолчанию пусть будет LEFT
int btnGravity = Gravity.LEFT;
// определяем, какой RadioButton "чекнут" и
// соответственно заполняем btnGravity
switch (rgGravity.getCheckedRadioButtonId()) {
case R.id.rbLeft:
btnGravity = Gravity.LEFT;
break;
case R.id.rbCenter:
btnGravity = Gravity.CENTER_HORIZONTAL;
break;
case R.id.rbRight:
btnGravity = Gravity.RIGHT;
break;
}
// переносим полученное значение выравнивания в LayoutParams
lParams.gravity = btnGravity;
// создаем Button, пишем текст и добавляем в LinearLayout
Button btnNew = new Button(this);
btnNew.setText(etName.getText().toString());
llMain.addView(btnNew, lParams);
break;
case R.id.btnClear:
llMain.removeAllViews();
Toast.makeText(this, "Удалено", Toast.LENGTH_SHORT).show();
break;
}
}
}
Код: Выделить всё
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RadioGroup
android:id="@+id/rgGravity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rbLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Left"/>
<RadioButton
android:id="@+id/rbCenter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Center"/>
<RadioButton
android:id="@+id/rbRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Right"/>
</RadioGroup>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText
android:id="@+id/etName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:fadeScrollbars="true"/>
<Button
android:id="@+id/btnCreate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Create" />
<Button
android:id="@+id/btnClear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clear" />
</LinearLayout>
<LinearLayout
android:id="@+id/llMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
Re: Урок 17. Создание View-компонент в рабочем приложении
Второй LinearLayout, в котором ЕдитТекст и Баттон, свойство android:layout_height="match_parent" исправьте на android:layout_height="wrap_content". Вы задаете высоту лэйаута заполнить родителя(оставшееся место на экране), из-за этого для третьего лейаута, который ниже и в котором создаются кнопки попросту нет места.а теперь сможете помочь?
Re: Урок 17. Создание View-компонент в рабочем приложении
Огромное Вам спасибоDonart писал(а):Второй LinearLayout, в котором ЕдитТекст и Баттон, свойство android:layout_height="match_parent" исправьте на android:layout_height="wrap_content". Вы задаете высоту лэйаута заполнить родителя(оставшееся место на экране), из-за этого для третьего лейаута, который ниже и в котором создаются кнопки попросту нет места.а теперь сможете помочь?
Re: Урок 17. Создание View-компонент в рабочем приложении
Объясните почему тип переменной выбран int ? Gravity.LEFT = равно числу?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 17. Создание View-компонент в рабочем приложении
Да, Gravity.LEFT - это целочисленная константа.RomIII писал(а):Объясните почему тип переменной выбран int ? Gravity.LEFT = равно числу?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 17. Создание View-компонент в рабочем приложении
Пытаюсь кнопке прописать ID.
Ошибка - button1.setId(btn1);
Получилось только присвоить, а для этого заранее создаю в ресурсах ID <item name="btn1" type="id"/>, тогда button1.setId(btn1); - все хорошо.
Можно ли прописать кнопке ID без присваивания ID из ресурса?
Также интересно почему нет ошибки и что означает, если прописать, например, button1.setId(100+1);
И как быть, если кнопки создаются программно, больше одной?
Пытался через цикл for (int i = 1; i < 5; i++) {textNew.setId(i);} - Ошибка.
Спасибо!
Ошибка - button1.setId(btn1);
Получилось только присвоить, а для этого заранее создаю в ресурсах ID <item name="btn1" type="id"/>, тогда button1.setId(btn1); - все хорошо.
Можно ли прописать кнопке ID без присваивания ID из ресурса?
Также интересно почему нет ошибки и что означает, если прописать, например, button1.setId(100+1);
И как быть, если кнопки создаются программно, больше одной?
Пытался через цикл for (int i = 1; i < 5; i++) {textNew.setId(i);} - Ошибка.
Спасибо!
Re: Урок 17. Создание View-компонент в рабочем приложении
Подскажите пожалуйста.
Как обращаться к динамически созданным кнопкам? Как определить уникальный слушатель нажатия на каждую их них?
Кнопки создались, но как же с ними работать?
создаю по такому коду:
[syntax=java]for (int i = 0; i < 3; i++) {
Button button = new Button(this);
layout.addView(button);
button.setText(textButton);
button.setGravity(Gravity.LEFT);
button.setId(i);
Integer iii = button.getId();
button.findViewById(iii);
ii = String.valueOf(i+1);
View.OnClickListener onClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Нажата кнопка: ", ii);
}
};
button.setOnClickListener(onClick);
}[/syntax]
в итоге при нажатии на каждую в логах пишется "Нажата кнопка: 3". А мне необходимо на каждую кнопку свое значение.
Спасибо!
Как обращаться к динамически созданным кнопкам? Как определить уникальный слушатель нажатия на каждую их них?
Кнопки создались, но как же с ними работать?
создаю по такому коду:
[syntax=java]for (int i = 0; i < 3; i++) {
Button button = new Button(this);
layout.addView(button);
button.setText(textButton);
button.setGravity(Gravity.LEFT);
button.setId(i);
Integer iii = button.getId();
button.findViewById(iii);
ii = String.valueOf(i+1);
View.OnClickListener onClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Нажата кнопка: ", ii);
}
};
button.setOnClickListener(onClick);
}[/syntax]
в итоге при нажатии на каждую в логах пишется "Нажата кнопка: 3". А мне необходимо на каждую кнопку свое значение.
Спасибо!
Re: Урок 17. Создание View-компонент в рабочем приложении
три кнопочки и создаете динамически?
поищите по форуму, это уже не раз обсуждалось.
поищите по форуму, это уже не раз обсуждалось.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198