Кнопка выравнивания Android в зависимости от видимости - PullRequest
2 голосов
/ 08 ноября 2011

У меня небольшая проблема с настройкой выравнивания кнопки в моем приложении.У меня есть 4 разные кнопки в одном макете, и в зависимости от некоторых значений из базы данных, я должен установить видимость одной кнопки.Вот пример кода xml, который я использую:

 <RelativeLayout 
    android:id="@+id/coll_buttons"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center"
    android:layout_marginBottom="10dp">


  <Button
        android:id="@+id/sync"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Synchronize"
        android:textSize="9dp"
        android:background="@drawable/ic_white_button"
        android:textColor="#333333"
        android:layout_margin="10dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:layout_alignParentLeft="true" />   

    <Button
        android:id="@+id/activate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Activate"
        android:textSize="9dp"
        android:background="@drawable/ic_white_button"
        android:textColor="#333333"
        android:layout_margin="10dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:layout_alignParentLeft="true" />

    <Button 
        android:id="@+id/buy_stampii"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Buy Stampii"
        android:textSize="9dp"
        android:background="@drawable/ic_white_button"
        android:textColor="#333333"
        android:layout_marginTop="10dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:layout_toRightOf="@+id/activate"
        android:layout_marginLeft="5dp" />

    <Button
        android:id="@+id/deactivate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Deactivate"
        android:textSize="9dp"
        android:background="@drawable/ic_white_button"
        android:textColor="#333333"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:layout_alignParentRight="true" />

</RelativeLayout>

В первом случае я должен установить видимость Button Activate на false и установить видимость Button Sync на true.Но когда я это делаю, моя кнопка Buy Stampii накладывается на Sync Button, потому что я настраиваю кнопку Buy Stampii toRightOf Activate Button.Так есть ли способ установить свойство Buy Stampii Button toRightOf для двух разных кнопок или как я могу решить эту проблему?

Большое спасибо!

Ответы [ 3 ]

2 голосов
/ 08 ноября 2011

NOp Я не думаю, что вы можете установить свойство toRightOf, указывающее на 2 виджета одновременно.

Да, есть один обходной путь, который вы можете сделать.Вместо того, чтобы сделать видимость исчезнувшей, вы можете установить для свойства INVISIBLE.в этом случае, если вы скажете, что A находится справа от B, все будет работать нормально, если A ВИДИМ.Но проблема в том, что когда A ушел, ушел означает, что B не будет знать, где его разместить (справа от «ничего», потому что A ушел).Хитрость заключается в том, чтобы поставить A быть невидимым.в этом случае вы все равно можете сказать, что B является правым от A, и B будет знать, где его разместить.

Недостатком является то, что когда A невидим, место все равно будет занято, но вы можете легко решить эту проблему.проблема с игрой с размером макета.Например, когда невидим, вы можете установить ширину 1dip, а когда VISIBLE, вы можете установить wrap_content или что-нибудь, что вам подходиткак это.

0 голосов
/ 08 ноября 2011

Лучший способ справиться с этим - использовать два разных файла макета для двух разных макетов, вертикальный и горизонтальный соответственно.

На самом деле построен для этого .

Я предлагаю вам прочитать эту документацию, это довольно простой способ решить вашу проблему!

Надеюсь, это поможет.

0 голосов
/ 08 ноября 2011

Я думаю, что решение состоит в том, чтобы изменить RelativeLayout.LayoutParams с соответствующими правилами, когда вы устанавливаете свои кнопки Visible / Invisible (Gone). Просто получите текущие параметры кнопки и. addRule (RelativeLayout.ALIGN_RIGHT, <new anchor id>)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...