Страница 7 из 8

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 07 мар 2015, 18:19
Алемарика
Foenix писал(а):я уже не помню что я делала
попробуй загуглить
http://stackoverflow.com/questions/9208 ... -simulator
http://stackoverflow.com/questions/1894 ... d-emulator
там говорят, что нужно установить доп. клавиатуру как приложение.
Установка - перетаскивание файла apk на эмулятор.
Спасибо. Не помогло (приложение перестала устанавливать, как только он сообщил, что заберет всю информацию с устройства (пароли-явки). Не смогла, рука дрогнула), а другие варианты не подошли.

Дошло, что можно пользоваться виртуальной клавиатурой устройства. Не очень удобно, но лучше, чем отдавать все данные)

Поняла, что зря смеялась над теми, кто не умеет пользоваться поиском. Оказалось, что я с поиском технической информации на неродном языке пока не дружу. В общем, есть куда расти

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 16 мар 2015, 14:50
NovikPY
Vladimir991 писал(а):Здравствуйте! Проект делал в Android Studio.
Все работает замечательно, но только не стирает. Не работает метод removeAllViews. Натолкните на ошибку пожалуйста.
Просмотрев код, и сравнив со своим (также делаю в Android Studio), нашел отличия только в

public class MainActivity extends Activity implements View.OnClickListener {

ну и естественно, Ваши импорты, которые Вы так и не показали ;)

Покажите полную версию кода MainActivity.java или уже все работает и все стирает? :D

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 16 мар 2015, 14:57
NovikPY
Алемарика писал(а): ...
Использую стандартный эмулятор, реальное устройство пока недоступно для проверки :(. Сможете подсказать в чем может быть проблема?
Заранее спасибо.
За неимением реального устройства, стандартным эмулятором лучше не пользоваться, установите себе альтернативный - Genymotion.
Он и по-шустрее и на нем, меньше проблем, чем со стандартным. ;)

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 29 апр 2015, 18:38
rsdev
Добрый день, Уважаемые разработчики.
Вопрос у меня следующий:
В данном примере при добавлении каждого нового компонента в контейнер, он отображается ниже предыдущего.
Есть ли возможность стандартными средствами помещать новый элемент в начало контейнера.
К примеру 5 добавленных элементов отображаются по счету: 5-4-3-2-1 а не 1-2-3-4-5 ?

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 29 апр 2015, 20:47
Foenix
мышью тащи куда надо - хоть на экране, хоть в дерево вьюшек

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 30 апр 2015, 04:08
rsdev
Foenix писал(а):мышью тащи куда надо - хоть на экране, хоть в дерево вьюшек
Имею в виду динамическое создание view во время работы приложения, а не работа с визуальным редактором IDE

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 30 апр 2015, 06:17
klblk
rsdev писал(а):
Foenix писал(а):мышью тащи куда надо - хоть на экране, хоть в дерево вьюшек
Имею в виду динамическое создание view во время работы приложения, а не работа с визуальным редактором IDE
http://developer.android.com/reference/ ... outParams)

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 30 апр 2015, 19:04
rsdev
klblk писал(а):
rsdev писал(а):
Foenix писал(а):мышью тащи куда надо - хоть на экране, хоть в дерево вьюшек
Имею в виду динамическое создание view во время работы приложения, а не работа с визуальным редактором IDE
http://developer.android.com/reference/ ... outParams)
Огромное спасибо за подсказку.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 02 май 2015, 12:00
wtor
Я не совсем понял, а зачем для кнопки btnCreate второй раз указывать высоту и ширину, ведь мы уже прописывали данные параметры в main.xml? Или я так понял это только для того чтобы указать отступ слева по умолчанию?

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 02 май 2015, 15:04
doter.ua
wtor писал(а):Я не совсем понял, а зачем для кнопки btnCreate второй раз указывать высоту и ширину, ведь мы уже прописывали данные параметры в main.xml? Или я так понял это только для того чтобы указать отступ слева по умолчанию?
То у конструктора такой минимальный набор параметров. Можно вместо создания новых парамс взять готовые.
Зависит_от_контейнера.LayoutParams params = view.getLayoutParams();
params.свойство = .. // некоторые свойства без гет\сеттеров
params.setСвойство(...) // другие с ними.

view.setLayoutParams( params );

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 19 июн 2015, 21:05
emmure
Здравствуйте, как сделать то же самое но с TableLayout, то есть чтобы кнопки таблично полностью заполняли область. Вот то что получилось у меня
main.xml

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

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">


    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:weightSum="1"
        android:id="@+id/linearLayout">

        <EditText
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:inputType="time"
            android:ems="10"
            android:id="@+id/etTime"
            android:layout_weight="1.02" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Добавить"
            android:id="@+id/btnCreate" />

    </LinearLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/linearLayout"
        android:id="@+id/llMain"></TableLayout>
</RelativeLayout>
main_acrivity.java

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

package com.example.pasha.mytest1;

import android.app.Activity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TableLayout;
import android.widget.TableRow;


public class MainActivity extends Activity implements View.OnClickListener {
    TableLayout llMain;
    EditText etTime;
    Button btnCreate;
    int wrapContent =  RelativeLayout.LayoutParams.WRAP_CONTENT;
    int B_ROWS = 0;
    int B_COLUMNS = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        llMain = (TableLayout) findViewById(R.id.llMain);
        etTime = (EditText) findViewById(R.id.etTime);
        btnCreate = (Button) findViewById(R.id.btnCreate);
        btnCreate.setOnClickListener(this);
    }
    public void onClick(View v)
    {
        TableRow tableRow = new TableRow(this);
        tableRow.setLayoutParams(new TableRow.LayoutParams( TableLayout.LayoutParams.WRAP_CONTENT    ,
                TableLayout.LayoutParams.WRAP_CONTENT));
        Button btnNew = new Button(this);
        btnNew.setText(etTime.getText().toString());
        tableRow.addView(btnNew,B_ROWS);
        if (B_ROWS == 4) {
            B_ROWS = 0;
            llMain.addView(tableRow,B_COLUMNS);
            B_COLUMNS++;
        }
        else
        {
            B_ROWS++;
        }

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
Я думал - сначала заполнится tableRow(5 элементов) потом, при добавлении его в TableLayout он отобразится. Но даже так у меня не работает. Хотелось бы чтобы при добавлении каждой кнопки, она сразу отображалась

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 29 июл 2015, 23:57
FLancer
wtor писал(а):Я не совсем понял, а зачем для кнопки btnCreate второй раз указывать высоту и ширину, ведь мы уже прописывали данные параметры в main.xml? Или я так понял это только для того чтобы указать отступ слева по умолчанию?
А здесь высота и ширина указывается не для самой кнопки btnCreate, а для тех НОВЫХ кнопок которые будут созданы при нажатии на кнопку btnCreate.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 30 июл 2015, 15:04
aleksbim
Как можно добавить свойство weight="1" ?

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 31 июл 2015, 16:52
FLancer
aleksbim писал(а):Как можно добавить свойство weight="1" ?
Либо через конструктор
Изображение

либо также, как и для поля "gravity"

Изображение

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 02 авг 2015, 12:56
aleksbim
Не могу понять почему у меня не получается.

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

public void plus1(View v){
		float myweight=1F;
		Button plus1=(Button) findViewById(R.id.plus1); plus1.setVisibility(View.GONE);
		LinearLayout ll3stroka = (LinearLayout) findViewById(R.id.ll3stroka);
		LayoutParams viewParams = new LayoutParams(LayoutParams.MATCH_PARENT, 
                LayoutParams.MATCH_PARENT);
		
		
		EditText et_plus1 =new EditText(this);
		et_plus1.requestFocus();
		ll3stroka.weight=myweight;    ????????????????????????
		et_plus1.setLayoutParams(viewParams);
		ll3stroka.addView(et_plus1);
	}
ll3stroka.weight=myweight; weight подчеркнуто красным cannot be resolved or is not a field

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 02 авг 2015, 14:59
FLancer
aleksbim писал(а):Не могу понять почему у меня не получается.

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

public void plus1(View v){
		float myweight=1F;
		Button plus1=(Button) findViewById(R.id.plus1); plus1.setVisibility(View.GONE);
		LinearLayout ll3stroka = (LinearLayout) findViewById(R.id.ll3stroka);
		LayoutParams viewParams = new LayoutParams(LayoutParams.MATCH_PARENT, 
                LayoutParams.MATCH_PARENT);
		
		
		EditText et_plus1 =new EditText(this);
		et_plus1.requestFocus();
		ll3stroka.weight=myweight;    ????????????????????????
		et_plus1.setLayoutParams(viewParams);
		ll3stroka.addView(et_plus1);
	}
ll3stroka.weight=myweight; weight подчеркнуто красным cannot be resolved or is not a field
Всё правильно подчёркивает. Потому что класс LinearLayout ссылкой на объект которого является переменная ll3stroka, не содержит аттрибута weight. Этот атрибут содержит ВЛОЖЕННЫЙ в LinearLayout класс LinearLayout.LayoutParams. А поэтому его нужно задавать не в 11 строке кода, а в 5-й

[syntax=java]LinearLayout.LayoutParams viewParams = new LinearLayout.LayoutParams (LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, myweight);[/syntax]

А если хочется в 11, то тогда нужно задавать не через ссылку ll3stroka, а через ссылку viewParams. И при этом viewParams должна иметь именно тип LinearLayout.LayoutParams, потому что у родительских классов, которые выше по иерархии этого атрибута нет.

[syntax=java]viewParams.weight = myweight[/syntax]

В общем, чтобы с этим не путаться нужно хорошо разобраться "кто на ком стоит", "кто в кого входит" и "кто чьих будет" :)
В самом начале 16 урока про это рассказано доступно и с картинками. Их нужно рассматривать до полного понимания. Если этого будет недостаточно, то можно посмотреть ещё тут и тут.

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 04 авг 2015, 16:28
aleksbim
Weight=1 - добавлено, gravity - не слушается. Что у меня в коде не так?

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

public void plus1(View v){ 
        int myweight=1; 
        Button plus1=(Button) findViewById(R.id.plus1); plus1.setVisibility(View.GONE); 
        LinearLayout ll3stroka = (LinearLayout) findViewById(R.id.ll3stroka);   
        LinearLayout.LayoutParams weightParams = new LinearLayout.LayoutParams (LayoutParams.MATCH_PARENT,  
                LayoutParams.MATCH_PARENT);
         weightParams.weight=myweight;       
         LinearLayout.LayoutParams centerGravityParams = new LinearLayout.LayoutParams(
                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
         centerGravityParams.gravity = Gravity.CENTER;        
        EditText et_plus1 =new EditText(this);  
        et_plus1.setLayoutParams(centerGravityParams); et_plus1.setLayoutParams(weightParams); 
        ll3stroka.addView(et_plus1); 
        et_plus1.requestFocus(); 
    }

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 13 авг 2015, 11:28
iCheater
Эм..в обще суть такова.

когда я нажимал ctrl + space чтобы добавить интерфейс OnClickListener я чет случайное нажал и теперь когда я нажимаю ctrl + space у меня появляется DialogInterface.OnClickListener (ну и добавляется import android.content.DialogInterface;)

что я делаю не так?

PS а где можно найти тру альтруиста , который выдержит все глупые и умные вопросы ?)


UPDATE:
вставил вручную View.OnClickListener и появилось диалоговое окно импорта, выбрал там View.OnClickListener нажал ок. как это работает? что гуглить?

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 28 окт 2015, 16:26
Человек
Опечатка "RadoiGroup возвращает ID"

Re: Урок 17. Создание View-компонент в рабочем приложении

Добавлено: 10 янв 2016, 12:43
NIKENIT
Интересный баг. После создания нескольких динамических кнопок, если переключить ориентацию телефона - все кнопки пропадут. Если вернуть старую ориентацию - обратно они не вернутся. Из-за чего такое может происходить?

EDIT: Добавил простой код для проверки количества элементов в лейауте llMain, после комбинации клавиш Ctrl+F12 число обнуляется, т.е. llMain очищается.