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

Я хотел бы разместить диалоговое окно в определенной позиции на экране (-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]


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


Ответы (2)


Это код!

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);
person Sana    schedule 03.10.2011
comment
Ой, я хотел использовать восклицание. - person Sana; 05.10.2011
comment
ПОЖАЛУЙСТА, обязательно вызовите setAttributes() с новыми значениями. В противном случае у вас будут случаи, когда некоторые или все значения, которые вы изменили, не будут применяться. - person hackbod; 09.10.2011

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

<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);
      }
    }
person Brian Griffey    schedule 09.10.2011