2017-10-17 29 views
0

我有一個LinearLayout裏面的網格視圖,這是默認設置的可見性GONE, 在單個按鈕上單擊我顯示LinearLayout,然後在另一個按鈕上單擊我也設置我的LinearLayout可見性再次消失。所以問題是我的佈局成功消失了,但它仍然佔用空間,我被這個問題困住了最後一天,並且還搜索了所有解決方案,但其中沒有一個爲我工作,爲什麼我的LinearLayout甚至佔用空間如果我在gridView中設置了可見性?

我的代碼是: -

這是我在適配器正在填充XML文件:

grid_view_dash_item.xml: -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="8dp" 
    android:layout_marginTop="8dp" 
    android:gravity="center" 
    android:orientation="vertical"> 

    <LinearLayout 
     android:id="@+id/layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="horizontal"> 


     <TextView 
      android:id="@+id/itemName" 
      style="@style/textColorBlack_14sp" 
      android:layout_width="110dp" 
      android:layout_height="wrap_content" 
      android:text="Check Engine" /> 

     <com.android.volley.toolbox.NetworkImageView 
      android:id="@+id/imgWacsItem" 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:layout_marginEnd="10dp" 
      android:src="@drawable/battery" /> 

     <Switch 
      android:id="@+id/switchView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="10dp" 
      android:theme="@style/SwitchTheme" 
      android:visibility="gone" /> 


     <IncrementDecrementWidgetActivity 
      android:id="@+id/number_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="14dp" 
      android:layout_marginTop="2dp" 
      app:textSize="18sp" /> 

     <LinearLayout 
      android:id="@+id/addCommentLayout" 
      android:layout_width="50dp" 
      android:layout_height="40dp" 
      android:gravity="center_vertical"> 

      <ImageView 
       android:id="@+id/imgAddItemComment" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:layout_marginStart="15dp" 
       android:src="@drawable/edit_icon" /> 

     </LinearLayout> 


     <Switch 
      android:id="@+id/switchViewNoShow" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginStart="-30dp" 
      android:theme="@style/SwitchTheme" 
      android:visibility="invisible" /> 

    </LinearLayout> 


     <LinearLayout 
     android:id="@+id/layoutEdit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:orientation="vertical" 
     android:padding="5dp"> 

     <EditText 
      android:id="@+id/editTextPopup" 
      android:layout_width="250dp" 
      android:layout_height="80dp" 
      android:background="@android:drawable/editbox_background_normal" 
      android:gravity="top" 
      android:hint="Enter Comment" 
      android:padding="10dp" 
      android:textColor="#000000" /> 

     <Button 
      android:id="@+id/closePopupBtn" 
      style="@style/buttonRegular" 
      android:layout_width="wrap_content" 
      android:layout_height="@dimen/default_button_height" 
      android:layout_marginTop="10dp" 
      android:gravity="center" 
      android:text="OK" /> 
     </LinearLayout> 



    <LinearLayout 
     android:id="@+id/pupUpWindowLayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/layout" 
     android:layout_gravity="start" 
     android:orientation="horizontal" 
     > 

     <TextView 
      android:id="@+id/textEdit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:visibility="gone" 
      android:text="text" /> 

    </LinearLayout> 

</LinearLayout> 

這是適配器的代碼: -

GridViewWacsItemAdapter extends RecyclerView.Adapter<GridViewWacsItemAdapter.ViewHolder> { 

    Context mContext; 
    List<WacsDashboardItemResponse.SubGroup.ItemArray> itemArray; 

    public GridViewWacsItemAdapter(Context mContext, List<WacsDashboardItemResponse.SubGroup.ItemArray> itemArray) { 
     this.mContext = mContext; 
     this.itemArray = itemArray; 
    } 

    @Override 
    public GridViewWacsItemAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_view_dash_item, parent, false); 
     ViewHolder viewHolder = new ViewHolder(v); 

     return viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(final GridViewWacsItemAdapter.ViewHolder holder, int position) { 

     if (itemArray.get(position).responseType.responseTypeList.equalsIgnoreCase("CHOICE_LIST1")) { 
      holder.switchView.setVisibility(View.VISIBLE); 
      holder.number_button.setVisibility(View.GONE); 
      holder.addCommentLayout.setVisibility(View.VISIBLE); 

      holder.switchViewNoShow.setVisibility(View.INVISIBLE); 

     } else if (itemArray.get(position).responseType.responseTypeList.equalsIgnoreCase("CHOICE_LIST2")) { 

      holder.switchView.setVisibility(View.GONE); 
      holder.number_button.setVisibility(View.VISIBLE); 
      holder.addCommentLayout.setVisibility(View.GONE); 

      holder.switchViewNoShow.setVisibility(View.GONE); 

      holder.number_button.setRange(0, 4); 
     } 

     holder.imgWacsItem.setDefaultImageResId(R.drawable.progress_bar_default); // image for loading... 
     holder.imgWacsItem.setImageUrl(itemArray.get(position).icon, AppController.getInstance().getImageLoader()); 
     holder.itemName.setText(itemArray.get(position).itmeDesc); 

     holder.number_button.setOnClickListener(new IncrementDecrementWidgetActivity.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       String number = holder.number_button.getNumber(); 
       // Toast.makeText(mContext, "number " + number, Toast.LENGTH_SHORT).show(); 
      } 
     }); 

holder.closePopupBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     holder.textEdit.setVisibility(View.VISIBLE); 
     holder.textEdit.setText(holder.editTextPopup.getText().toString()); 
     holder.layoutEdit.setVisibility(View.GONE); 

    } 
}); 
     holder.addCommentLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Toast.makeText(mContext, "Clicked on View", Toast.LENGTH_SHORT).show(); 
       holder.layoutEdit.setVisibility(View.VISIBLE); 

      } 

     }); 

    } 

    @Override 
    public int getItemCount() { 
     return itemArray.size(); 
    } 

    class ViewHolder extends RecyclerView.ViewHolder { 

     TextView itemName, textEdit; 
     Switch switchView, switchViewNoShow; 
     NetworkImageView imgWacsItem; 
     IncrementDecrementWidgetActivity number_button; 
     LinearLayout pupUpWindowLayout, addCommentLayout,layoutEdit; 
     Button closePopupBtn; 
     EditText editTextPopup; 


     public ViewHolder(View itemView) { 

      super(itemView); 

      itemName = (TextView) itemView.findViewById(R.id.itemName); 
      imgWacsItem = (NetworkImageView) itemView.findViewById(R.id.imgWacsItem); 
      switchView = (Switch) itemView.findViewById(R.id.switchView); 
      switchViewNoShow = (Switch) itemView.findViewById(R.id.switchViewNoShow); 
      closePopupBtn=(Button)itemView.findViewById(R.id.closePopupBtn); 
      editTextPopup=(EditText)itemView.findViewById(R.id.editTextPopup); 
      textEdit = (TextView) itemView.findViewById(R.id.textEdit); 
      pupUpWindowLayout = (LinearLayout) itemView.findViewById(R.id.pupUpWindowLayout); 
      addCommentLayout = (LinearLayout) itemView.findViewById(R.id.addCommentLayout); 
      layoutEdit = (LinearLayout) itemView.findViewById(R.id.layoutEdit); 
      layoutEdit.setVisibility(View.GONE); 


      number_button = (IncrementDecrementWidgetActivity) itemView.findViewById(R.id.number_button); 

     } 
    } 

} 

由我知道的任何類型的幫助: - 感謝

+0

哪個LinearLayout應該被隱藏?你的佈局有幾個 –

+0

感謝您對@Selali的迴應,其佈局具有id佈局編輯 – Champandorid

+0

在您的代碼中刪除'android:layout_marginBottom =「8dp」'。 – KeLiuyue

回答

0

把背景顏色的佈局,看看它是否是真的走了。可能會有其他視圖佔據空間,而不是您正在尋找的LinearLayout。

+0

沒有幫助,我說我的項目成功了,但空白空間維護 – Champandorid

+0

我剛剛嘗試了代碼,從XML中刪除了不必要的drawables和項目,並做了一個快速測試,我猜[代碼工程](https://youtu.be/1CLhhXU_J​​1w)。 –

相關問題