Страница 8 из 8
Re: Урок 17. Создание View-компонент в рабочем приложении
Добавлено: 15 май 2016, 15:17
alex_on
NIKENIT писал(а):Интересный баг. После создания нескольких динамических кнопок, если переключить ориентацию телефона - все кнопки пропадут. Если вернуть старую ориентацию - обратно они не вернутся. Из-за чего такое может происходить?
EDIT: Добавил простой код для проверки количества элементов в лейауте llMain, после комбинации клавиш Ctrl+F12 число обнуляется, т.е. llMain очищается.
Это не баг, это фича)))
Так задумано. При повороте Activity пересоздается заново.
Re: Урок 17. Создание View-компонент в рабочем приложении
Добавлено: 30 май 2017, 15:36
YettyZzZone
Ребят, подскажите, в чем может быть проблема? При использовании LinearLayout.LayoutParams атрибут gravity отображает кнопку именно там, где надо (слева, справа, по центру). А когда использую библиотеку поддержки LinearLayoutCompat.LayoutParams этот атрибут не применяется. Все кнопки появляются только слева. В документации ничего про это не нашел.
Код: Выделить всё
package com.yettyzzzone.dynamiclayout2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioGroup;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
LinearLayout llMain;
RadioGroup rgGravity;
EditText etName;
Button btnCreate;
Button btnClear;
int wrap_content = LinearLayout.LayoutParams.WRAP_CONTENT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_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 view) {
switch (view.getId()){
case R.id.btnCreate:
//Создаем LinearLayout с шириной и высотой по содержимому
LinearLayoutCompat.LayoutParams lParams = new LinearLayoutCompat.LayoutParams(
wrap_content, wrap_content);
int btnGravity = Gravity.START;
//Выясняем,какой radioButton чекнут
switch (rgGravity.getCheckedRadioButtonId()){
case R.id.rbLeft:
btnGravity = Gravity.START;
break;
case R.id.rbCenter:
btnGravity = Gravity.CENTER;
break;
case R.id.rbRight:
btnGravity = Gravity.END;
break;
}
lParams.gravity = btnGravity;
//Создаем Button
Button btn = new Button(this);
btn.setText(etName.getText().toString());
llMain.addView(btn, lParams);
break;
}
}
}
Re: Урок 17. Создание View-компонент в рабочем приложении
Добавлено: 09 июл 2017, 23:49
dassad
есть проект с кастомным View и все когда-то работало
теперь пытаюсь разобраться что не работает и вижу что видимо метод onMeasure этого View не вызывается вовсе
а по идее должен вызываться несколько даже раз.
отсюда у меня вообще нет размеров view - а что и кто запускает onMeasure?
Re: Урок 17. Создание View-компонент в рабочем приложении
Добавлено: 14 фев 2021, 12:46
RuslanSkee
Надеюсь форум ещё кто то читает, и сможет помочь мне с вопросом.Он заключается в следующем.В уроке 16 мы программно создали экран.
Но экран у нас получился без иерархий Layout.В методе setContentView(), мы задаём один Layout,как задать иерархию layout ов, что бы создать, программно такойже экран как в уроке 17.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
LinearLayout linearLayout1 = new LinearLayout(this);
linearLayout1.setOrientation(LinearLayout.VERTICAL);
LinearLayout linearLayout2 = new LinearLayout(this);
linearLayout2.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout linearLayout3 = new LinearLayout(this);
linearLayout3.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams layoutParams1 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.MATCH_PARENT);
Button btn1 = new Button(this);
Button btn2 = new Button(this);
Button btn3 = new Button(this);
Button btn4 = new Button(this);
btn1.setText("A");
btn2.setText("B");
btn3.setText("C");
btn4.setText("D");
linearLayout1.addView(btn1,layoutParams1);
linearLayout1.addView(btn2,layoutParams1);
linearLayout2.addView(btn3,layoutParams1);
linearLayout2.addView(btn4,layoutParams1);
super.onCreate(savedInstanceState);
setContentView(linearLayout2,layoutParams1);
Re: Урок 17. Создание View-компонент в рабочем приложении
Добавлено: 08 янв 2022, 18:09
andreii
RuslanSkee писал(а): ↑14 фев 2021, 12:46
Надеюсь форум ещё кто то читает, и сможет помочь мне с вопросом.Он заключается в следующем.В уроке 16 мы программно создали экран.
Но экран у нас получился без иерархий Layout.В методе setContentView(), мы задаём один Layout,как задать иерархию layout ов, что бы создать, программно такойже экран как в уроке 17.
А добавить дочерний Layout в корневой Layout не получится?
Код: Выделить всё
setContentView(Layout1)
Layout1.addView(Layout2)