Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Разместите действие, примененное с диалоговым окном темы, в определенной позиции x, y

Автор вопроса: SanaОтветов: 2

Я хотел бы разместить диалоговое окно в определенной позиции на экране (-10 пикселей сверху и -5 пикселей сверху).

Я применил тему и добавил android:scrollX, android:scrollY, но, похоже, это не работает.

Любые решения?

Ниже мой стиль xml.

<style name="Theme.MyDialog1" parent="android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:layout_width">300dp</item>
    <item name="android:scrollX">-10dp</item>
    <item name="android:scrollY">-5dp</item>
</style>

РЕДАКТИРОВАТЬ:

Я также пробовал android:layout_x и android:layout_y, но бесполезно!

Это то, что у меня есть! [введите описание изображения здесь] [1]

но то, что я действительно хочу, это то, что находится чуть ниже логотипа регистрации, расположенного с определенным положительным значением x и y !!!!![введите описание изображения здесь][2]

  • Преобладающий совет Google - не менять такие вещи, у пользователей есть ожидания, и это помечает пользователя, что вы сделали что-то нестандартное и, следовательно, не соответствует стандарту. Moog 10.10.2011

androidandroid-layoutandroid-dialog

Ответы

Ответ 1 · рейтинг 4 · Sana

Это код!

LayoutParams lp = this.getWindow().getAttributes();
             lp.x=50;lp.y=20;lp.width=100;lp.height=200;lp.gravity=Gravity.TOP | Gravity.LEFT;
            lp.dimAmount=0;
            lp.flags=LayoutParams.FLAG_LAYOUT_NO_LIMITS | LayoutParams.FLAG_NOT_TOUCH_MODAL;
this.setContentView(view, lp);

Ответ 2 · рейтинг 1 · Brian Griffey

Не расширяйте тему диалога, расширяйте тему панели.

<style name="Theme.CustomPanel" parent="@android:style/Theme.Panel">
         <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
         <item name="android:backgroundDimEnabled">true</item>
    </style>

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

Чтобы сделать его на 5 пикселей слева и на 10 пикселей сверху, просто добавьте отступы в свой макет.

 <!-- res/layout/your_layout.xml -->
   <FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:paddingTop="10px"
  android:paddingLeft="5px"></FrameLayout>

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

public class NonCenteredDialogActivity extends Activity{
      protected void onCreate(Bundle bundle){
          super.onCreate(bundle);
          setContentView(R.layout.your_layout);
      }
    }

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы