Страница 4 из 4

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 13 дек 2014, 19:34
Foenix
я не очень тебя понимаю, Но мне кажется, ты смешиваешь визуальное представление и сами данные. Данные - это одно, а их визуальное представление - другое. Активность или фрагмент - это шаблон, средство для отображения данных и не более того.
И думаю тебе нужно воспользоваться фрагментами в данной ситуации.

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 14 янв 2015, 13:21
Imar
выполняю ваши уроки в android studio.
какой class import выбрать для LinearLayout или я что то не так делаю?

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 13 мар 2015, 14:50
NovikPY
Imar писал(а):выполняю ваши уроки в android studio.
какой class import выбрать для LinearLayout или я что то не так делаю?
В AS немного отличается код от описанного кода в Eclipse, но суть одна и та же, посмотрите видео к уроку, там наглядно показывается из чего состоит экран, довольно просто и понятно.
В Android Studio Вам нужно импортировать

Код: Выделить всё

import android.view.ViewGroup;
 import android.widget.LinearLayout;
Получается при создании LinearLayout у Вас будет просто:

Код: Выделить всё

LinearLayout linLayout = new LinearLayout(this);
А при создании параметров:

Код: Выделить всё

ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
Чуть больше кода на первый взгляд, но благодаря AS, Вам и писать все это почти не придется, Studio все допишет за Вас ;)

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 30 апр 2015, 17:23
wtor
Способ интересный, но зачем выводить программно, если легче через main.xml?

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 30 апр 2015, 17:59
doter.ua
wtor писал(а):Способ интересный, но зачем выводить программно, если легче через main.xml?
Наверно потому, что название урока "Программное создание экрана"

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 01 июн 2015, 20:45
miha10999
Всем привет! помогите пожалуйста. Входе изучения уроков задался вопросом "Как сделать по нажатию на кнопку автоматическое создание нескольких других элементов например TextView"
и как сделать их создание с отступом вниз(чтобы каждый элемент в отдельной строчке). В моем примере они выводятся последовательно в одной строке.

public class MainActivity extends Activity implements OnClickListener {

int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;
List<TextView> textVilist;
LinearLayout llMain;
Button btn;
TextView tvVopros;
LinearLayout.LayoutParams lParams;


/** 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.linLayout);


// setContentView()
textVilist = new ArrayList<TextView>();
tvVopros = (TextView)findViewById(R.id.textView);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(this);

}

@Override
public void onClick(View v) {

int j = f1(3);
int otstup = 0;
switch (v.getId()) {
case R.id.button :
lParams = new LinearLayout.LayoutParams(wrapContent, wrapContent);
tvVopros.setText("Вопрос №1");
for (int i = 0; i < j; i++) {

TextView tv = new TextView(this);
//tv.setId(i);
tv.setText("Ответ№+"+ i +" ");
textVilist.add(i, tv);
otstup+=25;
lParams.topMargin=otstup;
lParams.leftMargin=10;
llMain.addView(tv,lParams);

;
}
break;
}

}
public int f1(int i)
{

return i;
}

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 01 июн 2015, 20:47
doter.ua
У LinearLayout должен быть orientation vertical
layout.setOrientation(LinearLayout.VERTICAL);

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 02 июн 2015, 18:01
miha10999
Спасибо! оказалось все просто

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 17 июл 2015, 10:51
Vasyabest
Ребят, только начинаю разбираться, может кто подскажет. Есть у меня простой проект HelloWorld, из примера, подключил я к нему другой сложный проект smms, как модуль. Каким образом мне из моего HelloWorld проекта, запустить smms?

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 27 окт 2015, 22:18
Человек
Делаю в Android Studio 1.4. Вот код из MainActivity.java

Код: Выделить всё

package ru.blabla.libname;

import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.ContextMenu;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.activity_main);
        ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        setContentView(ll, lp);
        ViewGroup.LayoutParams lp2 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        TextView tv = new TextView(this);
        ll.addView(tv,lp2);
        Button bt = new Button(this);
        bt.setLayoutParams(lp2);
        ll.addView(bt);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu m) {

        getMenuInflater().inflate(R.menu.mymenu,m);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem it) {
        return 5>4;
    }
    @Override
    public boolean onPrepareOptionsMenu(Menu m){

        return super.onPrepareOptionsMenu(m);
    }
}
В результате пишет про ошибку в смартфоне.
Этот урок и предыдущие делал в одном модуле (чтоб времени не терять). Может из-за прошлых уроков конфликт возник.

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 04 дек 2015, 21:04
RomanAndreich
Человек писал(а):Делаю в Android Studio 1.4. Вот код из MainActivity.java

Код: Выделить всё

package ru.blabla.libname;

import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.ContextMenu;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.activity_main);
        ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        setContentView(ll, lp);
        ViewGroup.LayoutParams lp2 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        TextView tv = new TextView(this);
        ll.addView(tv,lp2);
        Button bt = new Button(this);
        bt.setLayoutParams(lp2);
        ll.addView(bt);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu m) {

        getMenuInflater().inflate(R.menu.mymenu,m);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem it) {
        return 5>4;
    }
    @Override
    public boolean onPrepareOptionsMenu(Menu m){

        return super.onPrepareOptionsMenu(m);
    }
}
В результате пишет про ошибку в смартфоне.
Этот урок и предыдущие делал в одном модуле (чтоб времени не терять). Может из-за прошлых уроков конфликт возник.
Если для вас еще актуально. Удалите XML файлы и студия вам подскажет какие строчки кода нужно убрать что-бы работало. =)

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 23 фев 2016, 18:21
seamoon
icamys ваше изображение схемы, к сожалению, не открывается :cry:

Добавлено: 20 сен 2018, 06:57
levgilman
Что такое LayoutParams, когда слева нет класса и точки? Это по директиве вроде uses или что там в Джаве? А тут как назло в код урока не включены импорты и что ещё там должно быть.

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 06 июл 2021, 22:22
Денис87
Кнопка обязательно прописывается как Button btn или можно писать просто Button? Извините ежели что , начал изучение ваших уроков буквально вчера.

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 08 янв 2022, 10:50
andreii
Для Button1 kotlin:

val linLayout = LinearLayout(this)
linLayout.orientation = LinearLayout.VERTICAL
linLayout.layoutParams = LinearLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)
setContentView(linLayout)
...
val leftMarginParams = LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
leftMarginParams.leftMargin = 50
val btn1 = Button(this)
btn1.text = "Button1"
linLayout.addView(btn1, leftMarginParams)

Re: Урок 16. Программное создание экрана. LayoutParams

Добавлено: 25 фев 2022, 11:57
fat_fly
package com.example.p0161_dynamiclayout;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Gravity;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout liLay = new LinearLayout(this);
}
}

//если нужно явно указать контекст в этой строке "LinearLayout liLay = new LinearLayout(this);" на что в данном случае указывает слово "this"?