3 / 3 / 0
Регистрация: 20.12.2009
Сообщений: 68
1

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

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

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

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

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2011, 17:49
Ответы с готовыми решениями:

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

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

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

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

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

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  [ТС] 3
Не работает.

вот мой код

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 4
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  [ТС] 5
Спасибо за ответ.

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

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

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 9
Ну во-первых, margin это отступ, никого отношения к положению кнопки не имеет. Во-вторых, правильнее было бы создать новую тему и описать суть задачи, ибо в 99% случаев в этом нет необходимости, и решается правильным написанием разметки.
0
31 / 29 / 8
Регистрация: 12.12.2020
Сообщений: 256
09.01.2021, 20:19 10
Я понимаю что margin это отступ, но кнопка то не "отступает". И setTop и setLeft тоже не работают. Новую тему создать то можно но она такая же - как изменить положение кнопки в момент выполнения программы
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
09.01.2021, 21:41 11
Цитата Сообщение от Alex1126 Посмотреть сообщение
как изменить положение кнопки в момент выполнения программы
Использовать соответствующий метод, например, setX/setY.
1
09.01.2021, 21:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2021, 21:41
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru