2013-06-19 4 views
0

Мой первый вопрос состоял в том, чтобы щелкнуть по макету. Я решил это.Изменение позиции кнопки в Android

Теперь у меня вопрос, как установить положение кнопки в нужном месте?

минимальный уровень апи моего приложения является 8 (я не могу установить GetX() или getLeft())

Тестовый код XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > 
<Button android:id="@+id/buttonx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="X" /> 
</LinearLayout> 

Acitivty код:

import android.app.*; 
import android.os.*; 
import android.view.*; 
import android.widget.*; 

public class Test extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.test); 

     Button xclose = (Button) findViewById(R.id.buttonx); 
     xclose.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View arg0) { 
       finish(); 
      } 
     }); 
    } 
} 

любой способ изменить положение кнопки динамически или программно?

+0

вы получите много примеров на это посмотреть [ссылка] [1] [1]: http://stackoverflow.com/questions/3683727/layout-with-dynamic-position – anddevmanu

ответ

0

Вы всегда можете использовать NineOldAndroids по Джейк Уортон использовать setX() и setY() (и многие другие свойства). Эта библиотека возвращает обратно Honeycomb-Animation Framework в api level 1!

Если это не сработает, вы можете создать свою собственную группу ViewGroup и самостоятельно измерить/разделить их. Дополнительная информация here.

EDIT: Кроме того, View.getLeft()/getTop()/... доступен, начиная с уровня апи 1. См here

Надеется, что это помогает!

+0

Можете ли вы рассказать мне, как импортировать и использовать setLeft() с помощью NineOldAndroids? –

+0

Вы не должны вызывать setLeft(), инфраструктура сделает это за вас. Вам нужно создать пользовательский 'View', который переопределит' onMeasure() 'и' onLayout() '. Внутри 'onLayout()' вы можете вызвать 'this.myButton.layout (слева, сверху, вправо, внизу);' разместить кнопку где угодно внутри своего пользовательского представления. Подробнее здесь: http://www.youtube.com/watch?v=NYtB6mlu7vA – Jelle

0

Вы можете использовать отступы или маржу в коде, например

xclose.setPadding(left, top, right, bottom); 

В момент OnClick у попробовать этот

+0

пробовал раньше, не работает –

1

Если необходимо выровнять точку в Linear Layout Пожалуйста, прочитайте о тяжести и layout_gravity свойств ,

У вас есть другой макет, такой как относительная компоновка. Это даст вам больше свойств для просмотра alignment.ex: layout_alignLeft, layout_alignParentLeft и т.д ...

Изучение об этом, и использовать его, как вы хотите .... Спасибо ...

+0

ok im попробовал сейчас –

0

Я не знаю, где вы хотите найти свою кнопку, но вы должны посмотреть в FrameLayout (что позволит вам поместить кнопку в любом месте вашего макета).

0

Используя Android, вы обычно имеете три варианта компоновки, как описано в примечаниях Layouts | Android Developers. Linear Layout дает вам возможность объявлять элементы и связывать их по горизонтали или по вертикали. Relative Layout, который, как мне кажется, вам нужен, позволяет вам свободно определять позицию элемента относительно другого элемента, а Web View обычно используется для отображения содержимого, связанного с веб-сайтом.

Как я уже сказал, я считаю, что Relative Layout - это то, что вы ищете. Посмотрите на this example, который аккуратно описывает, как использовать различные параметры выравнивания для размещения элементов. У вас не будет двух основных категорий. Первый позволяет выровнять элемент с родительским элементом, который удобен, если вы хотите перемещать элементы влево, вправо, вверху, снизу или в центре. Второй позволяет определить выравнивание по отношению к элементам на одном уровне, указав, что ваш элемент должен быть, например, android:layout_toLeftOf или android:layout_below.Вы можете объединить все это, чтобы получить желаемый результат.

Я хорошо знаю, что есть много вариантов для достижения результата, но я нашел, что это довольно просто и обычно достаточно для достижения визуально привлекательных макетов.

0
<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:background="@drawable/blur2" 
    android:orientation="horizontal" 
    tools:context=".MainActivity" > 
<Button android:id="@+id/buttonx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="X" /> 

</RelativeLayout> 

Удостоверьтесь, что это относительный, а не Linearlayout, потому что по относительной он позволит вам легко перемещать кнопки.

Смежные вопросы