Урок 16. Программное создание экрана. LayoutParams
Re: Урок 16. Программное создание экрана. LayoutParams
Скорее View является компонентом, но не холстом, холст немного другое понятие из графического пакета Андроид, canvas передается в onDraw для отрисовки изображения в пределах выделенной области (прямоугольной), там можно уже рисовать все что угодно, для этого есть целый пакет специальных классов.
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 16. Программное создание экрана. LayoutParams
Извините, мне надо было сразу оговориться, что выражение "холст" образное, имеется в виду понятие awt панели в Java, которая может содержать и демонстрировать UI компоненты или другие панели.
Re: Урок 16. Программное создание экрана. LayoutParams
как я и сказал что не силён в теории, но на View можно спокойно рисовать
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 16. Программное создание экрана. LayoutParams
Если нет больше коментов, разрешите тему считать закрытой и уроки 16,17 и 18 мною изученными.
Завтра пойду дальше.
Спасибо.
Завтра пойду дальше.
Спасибо.
Re: Урок 16. Программное создание экрана. LayoutParams
Но все равно несовсем верное представление.dil_android писал(а):Извините, мне надо было сразу оговориться, что выражение "холст" образное, имеется в виду понятие awt панели в Java, которая может содержать и демонстрировать UI компоненты или другие панели.
Правильнее было бы перевести не "строительная площадка", а основной строительный блок для компонентов пользовательского интерфейса. Т.е. не на нем нужно строить UI, а из него. Как-то так.
Re: Урок 16. Программное создание экрана. LayoutParams
Всем привет! У меня в роли setContentView выступает класс Draw2D, в котором я собираюсь рисовать кое-какую графику. Графика рисуется замечательно, но вот проблема - в нем я не могу программно создавать кнопки. У класса LinearLayout есть метод .addView (child, params). А у класса Draw2D (а он унаследован от View) этот метод отсутствует. Как выходить из данной ситуации? Заранее благодарен!
Re: Урок 16. Программное создание экрана. LayoutParams
метод addView есть только у классов унаследованных от ViewGroup.
Вы можете поместить Draw2D в любой удобный для вас контейнер layout (если Draw2D унаследован от View, то должно получиться) и добавлять кнопки уже в этот контейнер поверх вашего Draw2D
Вы можете поместить Draw2D в любой удобный для вас контейнер layout (если Draw2D унаследован от View, то должно получиться) и добавлять кнопки уже в этот контейнер поверх вашего Draw2D
Re: Урок 16. Программное создание экрана. LayoutParams
Спасибо, но подскажите еще, как добавлять кнопки именно поверх draw2d?AndreyI писал(а):и добавлять кнопки уже в этот контейнер поверх вашего Draw2D
Re: Урок 16. Программное создание экрана. LayoutParams
Они и так должны располагаться в Z в порядке добавления (последние добавленные наверху). Если используется макет xml то сверху вниз , нижние элементы будут наверху
К примеру
Draw2D будет на весь экран, а кнопка будет поверх него.
К примеру
Код: Выделить всё
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.yourpackage.Draw2D
android:id="@+id/draw2d"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="65dp"
android:text="Button" />
</RelativeLayout>
Re: Урок 16. Программное создание экрана. LayoutParams
Всем доброго вечера! У меня вопрос наполовину не по теме урока, а наполовину - по теме ))). Необходимо (эта часть по теме) добавить программно кастомную кнопку (а вот эта вроде не по теме) поверх MapView. Для добавления представления поверх карты нашла вот это .
Может кто подскажет как это реализовать?
Код: Выделить всё
int y = 10;
int x = 10;
Button button1 = new Button(getApplicationContext());
button1.setText("эта кнопка должна быть прозрачной, с текстом и картинкой");
Может кто подскажет как это реализовать?
Re: Урок 16. Программное создание экрана. LayoutParams
карта должна лежать на релативной разметке и первая по иерархии, инлфейтите сам лейаут, вытаскиваете релативный лейаут и на него цепляете кнопку (соответственно кнопка должна иметь соответствующие параметры, какие вам там понадобятся, alignParent и т.д.).
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 16. Программное создание экрана. LayoutParams
rezak90, получилось через код создать и разместить кнопку нужного вида.
Теперь втупила как же обработать нажатие. Подскажите что в онКлике писать если кнопка без Id?
Код: Выделить всё
int y = 5;
int x = 1;
Button button1 = new Button(getApplicationContext());
button1.setText("здесь нужный текст");
button1.setCompoundDrawablesWithIntrinsicBounds(R.drawable.warn, 0, 0, 0);
button1.setOnClickListener(this);
MapView.LayoutParams screenLP;
screenLP = new MapView.LayoutParams(MapView.LayoutParams.MATCH_PARENT,
MapView.LayoutParams.WRAP_CONTENT, x, y,
MapView.LayoutParams.TOP);
mapView.addView(button1, screenLP);
Re: Урок 16. Программное создание экрана. LayoutParams
button1.setId(12345);
в onClicke:
case 12345: и т.д.
в onClicke:
case 12345: и т.д.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 16. Программное создание экрана. LayoutParams
rezak90, огромное СПАСИБО!!! Надо же было так заШкодиться
Re: Урок 16. Программное создание экрана. LayoutParams
Господа, поясните пожалуйста за эту диаграмму из урока. Она ведь верна только в том случае когда в том же LinearLayout я применяю один единственный экземпляр LinearLayout.LayoutParams и к RelativeLayout и к обоим View? Т.е. Диаграмма сделана чисто под конкретный случай, ведь я могу создать еще два экземпляра LinearLayout.LayoutParams и каждому View и RelativeLayout присвоить свой? Аналогично и с View принадлежащими RelativeLayout: я могу и для них насоздавать разных RelativeLayout.LayoutParams, т.е. в диаграмме опять же рассмотрен частный случай когда используется один экземпляр RelativeLayout.LayoutParams на несколько View?
- Вложения
-
- linearLayout.png (44.41 КБ) 20990 просмотров
Re: Урок 16. Программное создание экрана. LayoutParams
Тут речь не про экземпляры, а про классы. Этот класс вам надо будет использовать, чтобы работать с layout-параметрами объектов. А экземпляров там уже сколько угодно можно создать.Virun писал(а):Господа, поясните пожалуйста за эту диаграмму из урока. Она ведь верна только в том случае когда в том же LinearLayout я применяю один единственный экземпляр LinearLayout.LayoutParams и к RelativeLayout и к обоим View? Т.е. Диаграмма сделана чисто под конкретный случай, ведь я могу создать еще два экземпляра LinearLayout.LayoutParams и каждому View и RelativeLayout присвоить свой? Аналогично и с View принадлежащими RelativeLayout: я могу и для них насоздавать разных RelativeLayout.LayoutParams, т.е. в диаграмме опять же рассмотрен частный случай когда используется один экземпляр RelativeLayout.LayoutParams на несколько View?
Re: Урок 16. Программное создание экрана. LayoutParams
Подскажите пожалуйста как пользоваться MarginLayoutParams? Создаю FrameLayout как корневой, в него хочу поместить TextView с отступом слева от FrameLayout. Пытаюсь сделать так:
В итоге никакой отступ не применяется. В чём проблема?
Код: Выделить всё
FrameLayout FrLayout = new FrameLayout(this);
FrameLayout.LayoutParams FrLayoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
FrLayout.setLayoutParams(FrLayoutParams);
TextView tv = new TextView(this);
tv.setText("HELLO!");
MarginLayoutParams tvParams = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tvParams.leftMargin=10;
tv.setLayoutParams(tvParams);
FrLayout.addView(tv);
setContentView(FrLayout);
Re: Урок 16. Программное создание экрана. LayoutParams
пытаюсь сделать кнопку с выравниванием по нижнему краю:
но выходит вот так:
подскажите, в чём дело?
Код: Выделить всё
//сделаем параметры вывода с гравити к правому краю
LinearLayout.LayoutParams bottGravityParams= new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
bottGravityParams.gravity=Gravity.BOTTOM;
// создадим кнопку с гравити парметрами
Button btng=new Button(this);
btng.setText("Button with bottom gravity");
linLayout.addView(btng, bottGravityParams);
подскажите, в чём дело?
Re: Урок 16. Программное создание экрана. LayoutParams
все правильно выводится. Что нужно-то?
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
Re: Урок 16. Программное создание экрана. LayoutParams
невнимательнаяFoenix писал(а):все правильно выводится. Что нужно-то?
главный лейаут куда цепляется кнопка какой? если LinearLayout то высоту поставьте fill_parentluccello писал(а):пытаюсь сделать кнопку с выравниванием по нижнему краю:но выходит вот так:Код: Выделить всё
//сделаем параметры вывода с гравити к правому краю LinearLayout.LayoutParams bottGravityParams= new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); bottGravityParams.gravity=Gravity.BOTTOM; // создадим кнопку с гравити парметрами Button btng=new Button(this); btng.setText("Button with bottom gravity"); linLayout.addView(btng, bottGravityParams);
подскажите, в чём дело?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена