Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/131: Рейтинг темы: голосов - 131, средняя оценка - 4.69
3 / 3 / 0
Регистрация: 20.12.2009
Сообщений: 68

Изменение координат кнопки

16.08.2011, 17:49. Показов 26218. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, вопрос как программно изменять координаты кнопки ?

ниже приведу ссылки с помощью которых пытался разобраться, возможно кто сообразит.
android-button-in-arbitrary-position-over-relativelayout
change-button-position
dynamic-positioning-of-a-button-android

Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.08.2011, 17:49
Ответы с готовыми решениями:

Изменение размера текста кнопки вместе с размером самой кнопки?
Есть 100500 кнопок, нужно имитировать их нажатие. делаю это через селекторы и android:state_pressed но, текст таким образом не...

Изменение координат picturebox' а по нажатии кнопки
У меня есть picturebox к его вертикальным Y координатам надо прибавить значение переменной, и так чтобы значение переменной прибавлялост по...

Изменение координат кнопки при нажатии на нее
Есть кнопка, которая находиться в верху окна. Нажав на нее, она должна опуститься ниже на определенное число пунктов. Как это реализовать?

10
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
16.08.2011, 21:15
Ну примеры по сцылкам весьма понятные и развернутые.

Java
1
2
3
4
5
6
7
8
9
10
public void btnClick(View btn)
    {
        button = (Button)findViewById(R.id.button2);
        LinearLayout.LayoutParams linnear_lay = new LinearLayout.LayoutParams(250, 450); // высота и ширина
        linnear_lay.leftMargin = 15; // отступ слева
        linnear_lay.topMargin = 25; // отступ сверху
        linnear_lay.gravity = 16; // = CENTER_VERTICAL
        
        button.setLayoutParams(linnear_lay);
    }
Вещаем btnClick на какую-либо кнопку (к примеру), по нажатию задаем новые параметры слоя и устанавливаем эти параметры к нужному баттону. left_margin, gravity и т.д. - стандартные параметры слоя, можно посмотреть в дизайнере, интовые значения для позиций типа TOP, CENTER и т.д. есть в документации (по идее будет работать и через Gravity.TOP и т.д.)
2
3 / 3 / 0
Регистрация: 20.12.2009
Сообщений: 68
17.08.2011, 20:55  [ТС]
Не работает.

вот мой код

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.samples.button;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.view.View;
 
public class ButtonActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
       
        
        final Button button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                LinearLayout.LayoutParams linnear_lay = new LinearLayout.LayoutParams(25, 45); 
                linnear_lay.leftMargin = 150; 
                linnear_lay.topMargin = 25; 
                linnear_lay.gravity = 16; 
                
                button.setLayoutParams(linnear_lay);
            }
        });
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 
    <Button 
        android:id="@+id/button1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Button 1"/>
 
</LinearLayout>
0
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
17.08.2011, 23:28
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.samples.button;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.view.View;
 
public class ButtonActivity extends Activity 
{
    Button button;  
    
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         
        button = (Button)findViewById(R.id.button1);
     }
 
     public void onClick(View v) 
     {
                LinearLayout.LayoutParams linnear_lay = new LinearLayout.LayoutParams(25, 45); 
                linnear_lay.leftMargin = 150; 
                linnear_lay.topMargin = 25; 
                linnear_lay.gravity = 16; 
                
                button.setLayoutParams(linnear_lay);
      }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 
        <Button 
                android:id="@+id/button1" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:text="Button 1"
                android:onClick = "onClick"
        />
</LinearLayout>
Попробуйте так. Набирал прямо в местном редакторе, мог ошибиться где-то, если что - подправите, думаю.
1
3 / 3 / 0
Регистрация: 20.12.2009
Сообщений: 68
18.08.2011, 00:12  [ТС]
Спасибо за ответ.

не работает, кажется нельзя программно задать кнопке координату.
есть мысль что если использовать RelativeLayout, то можно позиционировать относительно центра, попробую. Если не получится нарисую изображение и буду использовать его как кнопку, позиционирование картинок у меня получалось.
0
17 / 17 / 1
Регистрация: 30.09.2009
Сообщений: 89
18.08.2011, 00:27
Как же не работает? Самый первый код что я кидал у меня работал, по нажатию клавиша изменяла свои координаты (пусть и не напрямую по осям, а за счет отступов, выравниваний и т.д.) и даже размеры.

Добавлено через 12 минут
Цитата Сообщение от Tiesto Посмотреть сообщение
есть мысль что если использовать RelativeLayout, то можно позиционировать относительно центра
это можно сделать и на LinnearLayout
1
3 / 3 / 0
Регистрация: 20.12.2009
Сообщений: 68
18.08.2011, 11:23  [ТС]
Работает, linnear_lay.gravity убрал, спасибо.
0
425 / 147 / 27
Регистрация: 12.12.2020
Сообщений: 1,199
09.01.2021, 17:38
Похоже за девять лет немало изменилось и данный код не работает как сейчас изменять положение кнопки?

Java
1
2
3
4
5
6
7
8
                
rColor[i] = new Button(this);
rColor[i].setText(R.string.df_time);
ConstraintLayout.LayoutParams linnear_lay = new ConstraintLayout.LayoutParams(200,36);
linnear_lay.leftMargin = 200;
linnear_lay.topMargin = 250;
rColor[i].setLayoutParams(linnear_lay);
layout.addView(rColor[i]);
ширина и длинна кнопки меняются - положение нет. С TextView проходит вот такой фокус
Java
1
2
3
4
                rMinute[i] = new TextView(this);
                rMinute[i].setText(R.string.df_time);
                rMinute[i].setPaddingRelative(60,200,0,0);
                layout.addView(rMinute[i]);
незнаю насколько он правильный, но с кнопкой не проходит.

И как цвет кнопки поменять?
Java
1
                rColor[i].setBackgroundColor(android.R.color.holo_red_dark);
этот код не работает почему то.
Java
1
                rColor[i].setBackgroundResource(android.R.color.holo_red_dark);
этот работает, но он на вход требует константу, а мне надо цвет задавать произвольный, числами.

Добавлено через 43 минуты
как я понял leftMargin работает когда кнопка растянута на весь экран (layout_width="match_parent"). А когда не растянута как ее позиционировать?

такой вариант тоже не работает.
Java
1
2
               rColor[i].setLeft(100);
             rColor[i].setTop(200);
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
09.01.2021, 20:15
Ну во-первых, margin это отступ, никого отношения к положению кнопки не имеет. Во-вторых, правильнее было бы создать новую тему и описать суть задачи, ибо в 99% случаев в этом нет необходимости, и решается правильным написанием разметки.
0
425 / 147 / 27
Регистрация: 12.12.2020
Сообщений: 1,199
09.01.2021, 20:19
Я понимаю что margin это отступ, но кнопка то не "отступает". И setTop и setLeft тоже не работают. Новую тему создать то можно но она такая же - как изменить положение кнопки в момент выполнения программы
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
09.01.2021, 21:41
Цитата Сообщение от Alex1126 Посмотреть сообщение
как изменить положение кнопки в момент выполнения программы
Использовать соответствующий метод, например, setX/setY.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2021, 21:41
Помогаю со студенческими работами здесь

Изменение координат кнопки в событии SizeChanged формы
Накидал такой код Public Class Form1 Public Sub Form1_Load() Handles MyBase.Load Dim x As New Button ...

Изменение координат кнопки при наведении курсора
всем привет как сделать что бы когда курсор мишки на него поставишь кнопка бутон от него сдвинулся помигите пожалуйста

Произвольное изменение координат мышки при нажатии кнопки
как сделать так чтобы при нажатии кн0пки координаты мышки изменялись произвольным образом

Изменение координат прямой при изменение угла наклона
Есть прямая координаты точек то есть линия лежит на оси х как изменятся координаты если один конец сдвинится на 10 градусов?

Автоматическое изменение размера кнопки в зависимости от фото которое находится на фоне кнопки
Например я сделал кнопку и поставил в кнопку фото, но на кнопке видно только половину фото. Мне нужно что-бы размер кнопки изменялся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru