Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Размеры виджетов

Всем привет, столкнулся со следующей проблемой. Необходимо сделать так, чтоб отношение размеров виджетов на макете к размерам самого макета было равно отношению размеров виджетов на устройстве к размерам самого устройства.
Вот, для наглядности, скрины.
Ответ: <?xml version="1.0" encoding="utf-8"?>
<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: paddingBottom="@dimen/activity_vertical_margin"
android: paddingLeft="@dimen/activity_horizontal_margin"
android: paddingRight="@dimen/activity_horizontal_margin"
android: paddingTop="@dimen/activity_vertical_margin"
tools: context=".AreaOfParalTwoDiagSin">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Через две диагонали и синус угла между ними"
android:id="@+id/textView46"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView9"
android:src="@mipmap/paraldiag"
android:layout_below="@+id/textView46"
android:layout_centerHorizontal="true"
android:layout_marginTop="39dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Введите первую диагональ"
android:id="@+id/textView40"
android:layout_centerVertical="true"
android:layout_alignParentStart="true" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="d1 ="
android:id="@+id/textView41"
android:textColor="#f40e30"
android:layout_alignBaseline="@+id/addFirstDiag"
android:layout_alignBottom="@+id/addFirstDiag"
android:layout_toStartOf="@+id/addSecondDiag" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/addFirstDiag"
android:inputType="numberDecimal"
android:layout_below="@+id/textView40"
android:layout_alignStart="@+id/addSecondDiag"
android:layout_alignEnd="@+id/btn_answer" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Введите вторую диагональ"
android:id="@+id/textView42"
android:layout_below="@+id/addFirstDiag"
android:layout_alignParentStart="true" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="d2 ="
android:id="@+id/textView43"
android:layout_marginTop="24dp"
android:textColor="#f10e0e"
android:layout_below="@+id/textView42"
android:layout_toStartOf="@+id/addFirstStor" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/addSecondDiag"
android:layout_alignBottom="@+id/textView43"
android:inputType="numberDecimal"
android:layout_alignEnd="@+id/imageView9"
android:layout_toEndOf="@+id/textView43" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Введите угол между диагоналями"
android:id="@+id/textView44"
android:layout_below="@+id/textView43"
android:layout_alignParentStart="true" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView8"
android:src="@mipmap/alpha"
android:layout_below="@+id/textView44"
android:layout_alignParentStart="true"
android:layout_marginTop="24dp" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/addConer"
android:layout_below="@+id/textView44"
android:inputType="numberDecimal"
android:layout_alignEnd="@+id/imageView9"
android:layout_toEndOf="@+id/imageView8" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Ответ :"
android:id="@+id/textView45"
android:layout_below="@+id/addConer"
android:layout_alignParentStart="true"
android:layout_marginTop="22dp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/text_answer"
android:layout_alignTop="@+id/textView45"
android:layout_toEndOf="@+id/textView45" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ОТВЕТ"
android:id="@+id/btn_answer"
android:layout_alignBottom="@+id/text_answer"
android:layout_alignEnd="@+id/addConer" />
</RelativeLayout>
Вопрос: Android Studio: не пойму как размещать layouts и виджеты

Начинаю знакомство с программированием android в Android Studio.
Начинаются проблемы с созданием макета.
Я понял, что группы виджетов, объеденных какой-то логикой, нужно объеденять в layout`ы и в макете просто размещать эти layout`ы относительно друг друга. Так же есть разные виды layout`ов, которые устанавливают правила размещение в нем виджетов. Вроде все понятно, но на практике ничего не получается:
1. Когда переношу любой layout на макет, он вообще отказывается изменять свои размеры, так как я хочу. При любом растягивании мышкой он просто начинает растягиваться либо на весь либо на пол экрана, занимая все пространство. Не получается разместить его, где я хочу и придать размеров, которых я хочу.(вроде фиксится ручным прописыванием в XML файле, но как это можно делать мышкой ??)
2. С размещением виджетов(например, кнопок) внутри layout`а практически идентичные проблемы. Не могу разместить его там, где я хочу(просто не перетаскивается) и при растягивании размер не меняет. В некоторых видах layout`ов, типа relative размер можно изменять, но там с размещением начинаются проблемы, он размещается относительно других, в итоге точного размещение не происходит.
Дайте совет, где я могу допускать ошибки. Не получается кастомизировать макеты, так как я хочу.
Ответ:
но как это можно делать мышкой ??
не очень-то и надо делать мышкой. ну зачем например задавать какую-то свою высоту для кнопки или ширину?
если у нее layout_width=wrap_content и layout_height=wrap_content то она сама примет нужный размер чтобы текст умещался и тыкать было удобно, а ты хочешь испортить?
судя по всему просто не умеешь пользоваться лейаут-менеджерами этими. советую сперва освоить LinearLayout я в начале все только на них и делал.
например, надо сделать типо браузер - вверху адресная строка по ширине экрана, справа кнопка небольшая, а все остальное (по ширине и высоте) занимает WebView.
я тупо брал LinearLayout как основной, ориентация вертикальная, и в нем две дочки - первое еще один LinearLayout но уже с горизонтальной ориентацией и width=fill_parent а height=wrap_content, и второе - WebView у которого и width и height стоят fill_parent.
затем в том LinearLayout, который вверху, я размещал EditText с width=fill_parent (а height=wrap_content - не надо его трогать зря!), и Button с width=wrap_content и height=wrap_content.
вот и вся структура, еще вроде weight надо ставить 1 у тех у кого fill_parent, ну и для "последнего штриха" еще паддинги-маргины можно настроить, хотя с ними осторожней, их наличие мешает тыкать, лучше чтобы паддинги были в самих контролах а не в layout-менеджерах, а в целом и без них нормально) и заметь ни одного фиксированного размера - на андроид они мало где нужны, вместо них принято юзать менеджеры
кстати ты бы тоже лучше конкретные примеры проблем привел, чем ныть
Вопрос: Не отображается часть виджета

Всем привет, сделал небольшой погодный виджет, так ради интереса, состоит он из картинки и двух текстовых полей под ней. Вроде ничего сложного, на моём телефоне 5.1 андроид, всё в порядке, у знакомой 6.0.1, текстовые поля видно, картинки нет, когда перетаскиваешь виджет то картинку видно(прозрачно), а так нет. Пробовал тестировать у друга с 5.0, так же не видно картинки, сегодня попробовал на планшете (4.2.2), картинка есть. Ничего не могу понять.
Ответ: DemD10, почитать о размерах ячейки виджета по версиям и проектировать ориентируясь на наименьший размер или разложить разметки по версиям (не пробовал)
Вопрос: Размер картинки под виджет

В виджете только ImageButton, какой должен быть размер картинки, чтобы она была в квадрате 1х1 (нормально помещалась, полностью, и была квадратной)?
Ответ: Нет, для виджетов, экран поделен на части, 1х1 это часть (один квадрат, прямоугольник).

Добавлено через 2 часа 17 минут
Посмотрел в чужом приложении (размер кнопки, в квадрате 1х1):
hdpi - 96x96
ldpi - 38x38
mdpi - 57x57
xhdpi - 144x144
Вопрос: Не могу установить виджет на рабочий стол

Здравствуйте!
Столкнулся с такой траблой: при скачивании виджет-приложения с Google Play апликуха на телефон закачивается (я ее вижу в списке приложении в разделе настроек моего тела), но запустить виджет на рабочий стол я не могу - из раздела виджетов я не могу перетянуть инстанс апликухи на рабочий стол по причине банального отсутствия его в списке виджетов.
Тел, на котором трабла - простой S-TELL M210 с Андроидом 4.2.2. При все при этом на другие модели ставится вполне нормально, Самсунги разные, проверено.
Кто подскажет, в чем причина?! И как пофиксить?!
Алекс
Ответ: нет, специально на SD не переносил... сразу после установки приложения на тел пытался установить виджет на рабочий стол
Вопрос: Запуск Activity по клику на виджет

ни как не пойму как активити то вызвать из виджета?тост получилось чтоб вылезал, а активность не врублюсь ни как, помогите люди добрые
Ответ: Очень просто!
Вешаешь ожидающее намерение на кнопку или любой другой элемент формы виджета и ВСЕ!
Вот рабочий пример (вставляем в метод updateAppWidget, класс Виджета):
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
....
Intent intent = new Intent(context, MainActivity.class); //запускаем главную Активность (можно другую)
PendingIntent pIntentMainActivity = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.appwidget_startMainActivity, pIntentMainActivity); 
//R.id.appwidget_startMainActivity - название кнопки в форме виджета. Но можно также на TextView повешать
...
appWidgetManager.updateAppWidget(appWidgetId, views); //в конце обязательно ЭТО. Иначе работать не будет!!!
}
Добавлено через 1 минуту
Напиши как Тост вывел! У меня с этим затык...
Вопрос: Вкладка виджеты

В смартфонах андроид в меню есть 2 вкладки: приложения и виджеты. А для чего нужны эти виджеты?? Ведь на них просто когда долго удерживаешь то они перемещаются на рабочий стол. Но это и так можно сделать с любым приложением. Смысл тогда вообще добавлять эти виджеты?? Они ж занимают лишнюю память на андроид девайсах.
Ответ:

Не по теме:

мда уж, сложный случай


то есть Вы не видите разницы между иконкой приложения и виджетом на рабочем столе?)
Вопрос: Клик по виджету

Здравствуйте господа форумчане!)помогите пожалуйста новичку!)Мне нужно, чтобы при клике по виджету открывался основной layout...буду очень признателен за любую помощь!)
Ответ: Если нужен переход,то вот.Зачем настолько всё было усложнено? =)
ConfigActivity:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ConfigActivity extends Activity  {
 
    
 
    final String LOG_TAG = "myLogs";
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);
        Log.d(LOG_TAG, "onCreate config");
 
    }
 
}
Creatable:
Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    public void onClick(View v) {
        Intent intent = new Intent(this,ConfigActivity.class);
        startActivity(intent);
    }
 
}
activity_main.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<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">
 
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="77dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:onClick="onClick" />
</RelativeLayout>
second.xml
XML
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
 
</LinearLayout>
Добавлено через 20 минут
(Если я правильно понял автора,просто я не увидел здесь класс виджета(Типа календарь,часы и т.д),разумно предположить,что код выдран откуда-то,а под виджетами имелось ввиду что-то типа "TextView","ImageView" и т.д,если же нет,то пардон )
Вопрос: Найти виджет по изображению

А если допустим у меня есть картинка(изображение) где размещен какой то виджет, но я не знаю как он называется, потому что в первый раз его встретил да и словами описать сложновато. Но я хочу найти в гугле как его реализовать. Может быть вообще виджет этот реализован в какой то библиотеке коих очень много, но по дизайну мне нужно использовать его в своем проекте. И как быть, как быстро найти нужное решение через гугл? Или может нужно поиск по изображению делать?
Ответ: Я думаю для произвольного виджета поиск в Гугл по изображению всех сделает
Вопрос: Добавление виджета через кнопку

Здравствуйте уважаемые программисты!)подскажите пожалуйста....весь интернет перелопатил... а по данному вопросу нет информации)ну или я криво ищу)вообщем возможно ли сделать так, чтобы на основном layout была кнопка... при клике на неё должен на рабочий стол добавляться виджет?буду рад любой помощи)
Ответ: тут про это ничего написано... а механизм создания виджета я и так знаю)