изменение места кнопки с помощью функции макета в абсолютном макете - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь расположить кнопку в другом месте, используя абсолютный макет. Я использую следующий XML-файл:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:background="@drawable/bcgrd">
  <Button
    android:id="@+id/start_challenge"
    android:textStyle="bold"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text = "Start Challenge"
    android:textColor= "@color/light_gray"
    android:background="@color/background">
    </Button>  
</AbsoluteLayout>

Java-файл содержит следующий код:

    Button start_it = (Button)findViewById(R.id.start_challenge);
    start_it.layout(200, 200, 200, 200);

но ничего не происходит (200-е только для примера. Может кто-нибудь сказать, пожалуйста, что я делаю неправильно.

Заранее спасибо.

1 Ответ

0 голосов
/ 10 мая 2011

То, что вы делаете неправильно, использует AbsoluteLayout. :) Серьезно, вы действительно не должны использовать это; попробуйте вместо этого использовать FrameLayout.

Однако, чтобы ответить на ваш вопрос, вы не должны вызывать макет на нем, сделайте это вместо:

AbsoluteLayout.LayoutParams params = (AbsoluteLayout.LayoutParams)start_it.getLayoutParams();
params.x = 200;
params.y = 200;
start_it.setLayoutParams(params);

Или с меньшим количеством кода, вы можете сделать это вместо:

start_it.setLayoutParams(new AbsoluteLayout.LayoutParams(
    start_it.getWidth(), start_it.getHeight(), 200, 200));
...