2014-04-04 3 views
0

У меня очень странная проблема с кнопками, вертикальное центрирование и видимость ушли. В моем приложении у меня есть список книг, и я использую библиотеку swipelistview для создания кнопок за каждой строкой. У меня есть 3 кнопки: возврат, отправка напоминания и удаление. Видимость кнопок возврата и отправки напоминаний устанавливается динамически, если книга не предоставляется. Теперь вот моя проблема. У меня есть следующий xml-макет для задней части строк.Странное поведение с кнопками и видимость ушла

<LinearLayout 
     android:id="@+id/swipelist_backview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
     android:tag="swipelist_backview" 
     android:background="#101010"> 
       <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="55px" 
       android:layout_gravity="center_vertical" 
       android:id="@+id/swipe_button1" 
       android:text="@string/markAsReturned"/> 

       <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center_vertical" 
       android:id="@+id/swipe_button2" 
       android:layout_gravity="center_vertical" 
       android:text="@string/sendReminder"/> 

       <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center_vertical" 
       android:id="@+id/swipe_button3" 
       android:layout_gravity="center_vertical" 
       android:text="@string/delete"/> 


</LinearLayout> 

Теперь ожидаемый результат от этого является то, что кнопки будут выровнены по вертикали в середине каждого ряда, который не произойдет, если книга lended, и все кнопки видны. Но если книга не заимствована, единственная отображаемая кнопка - это удаление, и она не выровнена.

Я также установка левого края кнопки удаления до 55 пикселей, используя следующий код:

if(!item.isLended()) 
{ 
    btnReturn.setVisibility(View.GONE); 
    btnSendReminder.setVisibility(View.GONE); 
    LayoutParams lp = new LayoutParams(btnDelete.getLayoutParams()); 
    lp.setMargins(55, 0, 0, 0); 
    btnDelete.setLayoutParams(lp); 
} 

Я думал, что это может быть удалением Verical выравнивания, но не кажется LayoutParams есть способ установить layout-gravity, чтобы он не выглядел.

ответ

1

Ну, я думаю, это был LayoutParams. Если кто-то заинтересовался, вот как я его решил:

if(!item.isLended()) 
{ 
    btnReturn.setVisibility(View.GONE); 
    btnSendReminder.setVisibility(View.GONE); 
    LayoutParams lp = new LayoutParams(btnDelete.getLayoutParams()); 
    lp.setMargins(55, 0, 0, 0); 
    lp.gravity = Gravity.CENTER_VERTICAL; 
    btnDelete.setLayoutParams(lp); 
} 
Смежные вопросы