我有一個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);
}
}
}
由我知道的任何類型的幫助: - 感謝
哪個LinearLayout應該被隱藏?你的佈局有幾個 –
感謝您對@Selali的迴應,其佈局具有id佈局編輯 – Champandorid
在您的代碼中刪除'android:layout_marginBottom =「8dp」'。 – KeLiuyue