diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fbd856f9da..2e0e19c684 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -237,6 +237,10 @@
android:name = "com.gh.gamecenter.AskSelectGameActivity"
android:screenOrientation = "portrait" />
+
+
extends BaseFragment implements
mListViewModel = ViewModelProviders.of(this, factory).get(ListViewModel.class);
mListViewModel.getObsListData().observe(this, this);
mListViewModel.load(LoadType.nomarl);
+
+ mListRv.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true));
}
@Override
@@ -69,7 +71,6 @@ public abstract class ListFragment extends BaseFragment implements
mLayoutManager = new LinearLayoutManager(getContext());
mListRv.setLayoutManager(mLayoutManager);
mListRv.setAdapter(provideListAdapter());
- mListRv.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true));
mListRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/AnswerEditFragment.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/AnswerEditFragment.java
new file mode 100644
index 0000000000..9166978aad
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/AnswerEditFragment.java
@@ -0,0 +1,152 @@
+package com.gh.gamecenter.questionsdetail;
+
+import android.content.Intent;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.MediaStore;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.text.Editable;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.ImageSpan;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.gh.base.fragment.BaseFragment;
+import com.gh.gamecenter.R;
+import com.lightgame.utils.Utils;
+
+import java.io.FileOutputStream;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+import static com.gh.gamecenter.SelectUserIconActivity.MEDIA_ICON_REQUEST;
+
+/**
+ * Created by khy on 7/12/17.
+ */
+
+public class AnswerEditFragment extends BaseFragment {
+ @BindView(R.id.answer_edit_title)
+ TextView mTitle;
+ @BindView(R.id.answer_edit_content)
+ EditText mEditContent;
+ @BindView(R.id.answer_edit_img_icon)
+ ImageView mImgIcon;
+
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (data != null && requestCode == MEDIA_ICON_REQUEST) {
+ Uri selectedImage = data.getData();
+ if (selectedImage == null || getActivity() == null) {
+ return;
+ }
+ String[] filePathColumn = {MediaStore.Images.Media.DATA};
+
+ Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
+ if (cursor == null) {
+ return;
+ }
+ cursor.moveToFirst();
+
+ int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
+ String picturePath = cursor.getString(columnIndex);
+ cursor.close();
+
+ Bitmap bitmap = compressPicture(picturePath);
+
+ insertPicToEt(bitmap); // todo 插入图片前应该向服务器提交图片
+
+ Utils.log("picturePath = " + picturePath);
+ }
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.fragment_answer_edit;
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ }
+
+ /**
+ * 压缩图片
+ * 规则:
+ * 1.如果图片大于当前EditText的最大宽度则按比例缩放,使图片宽度和EditText的宽度保持一致 (高度不处理)
+ * 2.如果图片小于当前EditText 由于比例限制 将不处理
+ * @param srcPath 图片路径
+ * @return
+ */
+ public Bitmap compressPicture(String srcPath) {
+
+ FileOutputStream fos = null;
+ BitmapFactory.Options op = new BitmapFactory.Options();
+
+ // 开始读入图片,此时把options.inJustDecodeBounds 设回true了
+ op.inJustDecodeBounds = true;
+ Bitmap bitmap = BitmapFactory.decodeFile(srcPath, op);
+ op.inJustDecodeBounds = false;
+
+ // 缩放图片的尺寸
+ float w = op.outWidth;
+ float h = op.outHeight;
+ float index = w/h;
+ int width = mEditContent.getWidth();
+ float hh = width/index;
+ float ww = width;
+
+ float be = 1.0f;
+ if (w > h && w > ww) {
+ be = (float) (w / ww);
+ } else if (w < h && h > hh) {
+ be = (float) (h / hh);
+ }
+ if (be <= 0) {
+ be = 1.0f;
+ }
+ op.inSampleSize = (int) be;// 设置缩放比例,这个数字越大,图片大小越小.
+ // 重新读入图片,注意此时已经把options.inJustDecodeBounds 设回false了
+ bitmap = BitmapFactory.decodeFile(srcPath, op);
+ int desWidth = (int) (w / be);
+ int desHeight = (int) (h / be);
+ return Bitmap.createScaledBitmap(bitmap, desWidth, desHeight, true);
+
+ }
+
+ @OnClick(R.id.answer_edit_img_icon)
+ public void onClick(View view) {
+ if (view.getId() == R.id.answer_edit_img_icon) {
+ Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
+ startActivityForResult(intent, MEDIA_ICON_REQUEST);
+ }
+ }
+
+ private void insertPicToEt(Bitmap bitmap) {
+ if (bitmap == null) return;
+ ImageSpan imageSpan = new ImageSpan(getContext(), bitmap);
+ int index = mEditContent.getSelectionStart();
+ String tempUrl = "
";
+ SpannableString spannableString = new SpannableString(tempUrl);
+ spannableString.setSpan(imageSpan, 0, tempUrl.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ Editable editableText = mEditContent.getEditableText();
+ if (index < 0 || index >= editableText.length()) {
+ editableText.append(spannableString);
+ } else {
+ editableText.insert(index, spannableString);
+ }
+
+ Utils.log("insertPicToEt = ");
+
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailAdapter.java
new file mode 100644
index 0000000000..d82d4cfb22
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailAdapter.java
@@ -0,0 +1,102 @@
+package com.gh.gamecenter.questionsdetail;
+
+import android.content.Context;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.gh.base.OnListClickListener;
+import com.gh.common.constant.ItemViewType;
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder;
+import com.gh.gamecenter.ask.AskItemViewHolder;
+import com.lightgame.adapter.BaseRecyclerAdapter;
+
+/**
+ * Created by khy on 7/12/17.
+ */
+
+public class QuestionsDetailAdapter extends BaseRecyclerAdapter {
+
+ private OnListClickListener mListClickListener;
+
+ public QuestionsDetailAdapter(Context context, OnListClickListener listClickListener) {
+ super(context);
+ mListClickListener = listClickListener;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ if (position == 0) {
+ return ItemViewType.ITEM_TOP;
+ } else if (position == getItemCount() - 1) {
+ return ItemViewType.ITEM_FOOTER;
+ } else {
+ return ItemViewType.ITEM_BODY;
+ }
+ }
+
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view;
+ switch (viewType) {
+ case ItemViewType.ITEM_TOP:
+ view = mLayoutInflater.inflate(R.layout.questionsdetail_item, parent, false);
+ return new QuestionsDetailItemViewHolder(view, null, mListClickListener);
+ case ItemViewType.ITEM_FOOTER:
+ view = mLayoutInflater.inflate(R.layout.questionsdetail_footer_item, parent, false);
+ return new ReuseViewHolder(view);
+ case ItemViewType.ITEM_BODY:
+ view = mLayoutInflater.inflate(R.layout.ask_hot_item, parent, false);
+ return new AskItemViewHolder(view, null, mListClickListener);
+ default:
+ return null;
+ }
+
+ }
+
+ @Override
+ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+ switch (getItemViewType(position)) {
+ case ItemViewType.ITEM_TOP:
+ initQuestionsDetailItemViewHolder((QuestionsDetailItemViewHolder) holder);
+ break;
+ case ItemViewType.ITEM_FOOTER:
+ break;
+ case ItemViewType.ITEM_BODY:
+ break;
+ }
+ }
+
+ private void initQuestionsDetailItemViewHolder(QuestionsDetailItemViewHolder holder) {
+
+ holder.mTagRv.setLayoutManager(new LinearLayoutManager(mContext, RecyclerView.HORIZONTAL, false));
+ holder.mTagRv.setAdapter(new RecyclerView.Adapter() {
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view = mLayoutInflater.inflate(R.layout.questionsdetail_tag_item, parent, false);
+ return new ReuseViewHolder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+ View item = holder.itemView;
+ if (item instanceof TextView) {
+ TextView tag = (TextView) item;
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return 0;
+ }
+ });
+ }
+
+ @Override
+ public int getItemCount() {
+ return 0;
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailFragment.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailFragment.java
new file mode 100644
index 0000000000..9b1d24fbdd
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailFragment.java
@@ -0,0 +1,54 @@
+package com.gh.gamecenter.questionsdetail;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.RelativeLayout;
+
+import com.gh.base.fragment.BaseFragment;
+import com.gh.gamecenter.R;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+
+/**
+ * Created by khy on 7/12/17.
+ */
+
+public class QuestionsDetailFragment extends BaseFragment {
+
+ @BindView(R.id.questionsdetail_rv)
+ RecyclerView mRecyclerView;
+ @BindView(R.id.questionsdetail_answer)
+ RelativeLayout mAnswer;
+ @BindView(R.id.questionsdetail_invite)
+ RelativeLayout mInvite;
+
+ QuestionsDetailAdapter mAdapter;
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.fragment_questionsdetail;
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ mAdapter = new QuestionsDetailAdapter(getContext(), this);
+ mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ mRecyclerView.setAdapter(mAdapter);
+ }
+
+ @OnClick({R.id.questionsdetail_answer, R.id.questionsdetail_invite})
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.questionsdetail_answer:
+ break;
+ case R.id.questionsdetail_invite:
+ break;
+ }
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailItemViewHolder.java
new file mode 100644
index 0000000000..b075425620
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsDetailItemViewHolder.java
@@ -0,0 +1,41 @@
+package com.gh.gamecenter.questionsdetail;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.TextView;
+
+import com.facebook.drawee.view.SimpleDraweeView;
+import com.gh.base.BaseRecyclerViewHolder;
+import com.gh.base.OnListClickListener;
+import com.gh.gamecenter.R;
+
+import butterknife.BindView;
+
+/**
+ * Created by khy on 7/12/17.
+ */
+
+public class QuestionsDetailItemViewHolder extends BaseRecyclerViewHolder {
+ @BindView(R.id.questionsdetail_item_tagrv)
+ public RecyclerView mTagRv;
+ @BindView(R.id.questionsdetail_item_title)
+ public TextView mTitle;
+ @BindView(R.id.questionsdetail_item_des)
+ public TextView mDes;
+ @BindView(R.id.questionsdetail_item_pic1)
+ public SimpleDraweeView mPic1;
+ @BindView(R.id.questionsdetail_item_pic2)
+ public SimpleDraweeView mPic2;
+ @BindView(R.id.questionsdetail_item_pic3)
+ public SimpleDraweeView mPic3;
+ @BindView(R.id.questionsdetail_item_answercount)
+ public TextView mAnswercount;
+ @BindView(R.id.questionsdetail_item_concern)
+ public TextView mConcern;
+
+ public QuestionsDetailItemViewHolder(View itemView, Object data, OnListClickListener listClickListener) {
+ super(itemView, data, listClickListener);
+ itemView.setOnClickListener(this);
+ mConcern.setOnClickListener(this);
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteAdapter.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteAdapter.java
new file mode 100644
index 0000000000..c0e5af4754
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteAdapter.java
@@ -0,0 +1,85 @@
+package com.gh.gamecenter.questionsdetail;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.gh.base.OnListClickListener;
+import com.gh.common.constant.ItemViewType;
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
+import com.gh.gamecenter.baselist.BaseListAdapter;
+import com.gh.gamecenter.baselist.LoadStatus;
+
+import java.util.List;
+
+/**
+ * Created by khy on 7/12/17.
+ */
+
+public class QuestionsInviteAdapter extends BaseListAdapter {
+
+ private OnListClickListener mListClickListener;
+
+ public QuestionsInviteAdapter(Context context, OnListClickListener listClickListener) {
+ super(context);
+ mListClickListener = listClickListener;
+ }
+
+ @Override
+ protected void provideListData(List listData) {
+
+ }
+
+ @Override
+ protected void loadChange(LoadStatus status) {
+
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ if (position == 0) {
+ return ItemViewType.ITEM_TOP;
+ } else if (position == getItemCount() - 1) {
+ return ItemViewType.ITEM_FOOTER;
+ } else {
+ return ItemViewType.ITEM_BODY;
+ }
+ }
+
+ @Override
+ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ View view;
+ switch (viewType) {
+ case ItemViewType.ITEM_TOP:
+ view = mLayoutInflater.inflate(R.layout.questionsinvite_top_item, parent, false);
+ return new QuestionsInviteTopItemViewHolder(view, null, mListClickListener);
+ case ItemViewType.ITEM_FOOTER:
+ view = mLayoutInflater.inflate(R.layout.refresh_footerview, parent, false);
+ return new FooterViewHolder(view, null, mListClickListener);
+ case ItemViewType.ITEM_BODY:
+ view = mLayoutInflater.inflate(R.layout.questionsinvite_item, parent, false);
+ return new QuestionsInviteItemViewHolder(view, null, mListClickListener);
+ default:
+ return null;
+ }
+ }
+
+ @Override
+ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+ switch (getItemViewType(position)) {
+ case ItemViewType.ITEM_TOP:
+ break;
+ case ItemViewType.ITEM_FOOTER:
+ break;
+ case ItemViewType.ITEM_BODY:
+ break;
+ }
+ }
+
+ @Override
+ public int getItemCount() {
+ return 0;
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteFragment.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteFragment.java
new file mode 100644
index 0000000000..a61ea91a5e
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteFragment.java
@@ -0,0 +1,28 @@
+package com.gh.gamecenter.questionsdetail;
+
+import com.gh.gamecenter.baselist.BaseListAdapter;
+import com.gh.gamecenter.baselist.ListFragment;
+import com.gh.gamecenter.entity.NewsEntity;
+
+import java.util.List;
+
+import rx.Observable;
+
+/**
+ * Created by khy on 7/12/17.
+ */
+
+public class QuestionsInviteFragment extends ListFragment {
+
+ private QuestionsInviteAdapter mAdapter;
+
+ @Override
+ public Observable> provideDataObservable() {
+ return null;
+ }
+
+ @Override
+ protected BaseListAdapter provideListAdapter() {
+ return mAdapter == null ? mAdapter = new QuestionsInviteAdapter(getContext(), this) : mAdapter;
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteItemViewHolder.java
new file mode 100644
index 0000000000..d455088c49
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteItemViewHolder.java
@@ -0,0 +1,32 @@
+package com.gh.gamecenter.questionsdetail;
+
+import android.view.View;
+import android.widget.TextView;
+
+import com.facebook.drawee.view.SimpleDraweeView;
+import com.gh.base.BaseRecyclerViewHolder;
+import com.gh.base.OnListClickListener;
+import com.gh.gamecenter.R;
+
+import butterknife.BindView;
+
+/**
+ * Created by khy on 7/12/17.
+ */
+
+public class QuestionsInviteItemViewHolder extends BaseRecyclerViewHolder {
+ @BindView(R.id.questionsinvite_item_icon)
+ public SimpleDraweeView mIcon;
+ @BindView(R.id.questionsinvite_item_name)
+ public TextView mName;
+ @BindView(R.id.questionsinvite_item_answercount)
+ public TextView mAnswercount;
+ @BindView(R.id.questionsinvite_item_votecount)
+ public TextView mVotecount;
+ @BindView(R.id.questionsinvite_item_invite)
+ public TextView mInvite;
+
+ public QuestionsInviteItemViewHolder(View itemView, Object data, OnListClickListener listClickListener) {
+ super(itemView, data, listClickListener);
+ }
+}
diff --git a/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteTopItemViewHolder.java b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteTopItemViewHolder.java
new file mode 100644
index 0000000000..7b044932de
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/questionsdetail/QuestionsInviteTopItemViewHolder.java
@@ -0,0 +1,23 @@
+package com.gh.gamecenter.questionsdetail;
+
+import android.view.View;
+import android.widget.TextView;
+
+import com.gh.base.BaseRecyclerViewHolder;
+import com.gh.base.OnListClickListener;
+import com.gh.gamecenter.R;
+
+import butterknife.BindView;
+
+/**
+ * Created by khy on 7/12/17.
+ */
+
+public class QuestionsInviteTopItemViewHolder extends BaseRecyclerViewHolder {
+ @BindView(R.id.questionsinvite_top_item_invite)
+ public TextView mInvite;
+
+ public QuestionsInviteTopItemViewHolder(View itemView, Object data, OnListClickListener listClickListener) {
+ super(itemView, data, listClickListener);
+ }
+}
diff --git a/app/src/main/res/drawable-xxhdpi/answer_edit_img_icon.png b/app/src/main/res/drawable-xxhdpi/answer_edit_img_icon.png
new file mode 100644
index 0000000000..7306cdba6a
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/answer_edit_img_icon.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/answer_edit_questions_icon.png b/app/src/main/res/drawable-xxhdpi/answer_edit_questions_icon.png
new file mode 100644
index 0000000000..8ec13e435a
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/answer_edit_questions_icon.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/questionsdetail_answer_icon.png b/app/src/main/res/drawable-xxhdpi/questionsdetail_answer_icon.png
new file mode 100644
index 0000000000..8360e49443
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/questionsdetail_answer_icon.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/questionsdetail_footer_icon.png b/app/src/main/res/drawable-xxhdpi/questionsdetail_footer_icon.png
new file mode 100644
index 0000000000..e1c66df667
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/questionsdetail_footer_icon.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/questionsdetail_invite_icon.png b/app/src/main/res/drawable-xxhdpi/questionsdetail_invite_icon.png
new file mode 100644
index 0000000000..d43764de18
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/questionsdetail_invite_icon.png differ
diff --git a/app/src/main/res/layout/activity_ask_questionsdetail.xml b/app/src/main/res/layout/activity_ask_questionsdetail.xml
new file mode 100644
index 0000000000..aac4ab2bb4
--- /dev/null
+++ b/app/src/main/res/layout/activity_ask_questionsdetail.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_answer_edit.xml b/app/src/main/res/layout/fragment_answer_edit.xml
new file mode 100644
index 0000000000..20bd2de07a
--- /dev/null
+++ b/app/src/main/res/layout/fragment_answer_edit.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_questionsdetail.xml b/app/src/main/res/layout/fragment_questionsdetail.xml
new file mode 100644
index 0000000000..c6a156ff31
--- /dev/null
+++ b/app/src/main/res/layout/fragment_questionsdetail.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/questionsdetail_footer_item.xml b/app/src/main/res/layout/questionsdetail_footer_item.xml
new file mode 100644
index 0000000000..d7018568a2
--- /dev/null
+++ b/app/src/main/res/layout/questionsdetail_footer_item.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/app/src/main/res/layout/questionsdetail_item.xml b/app/src/main/res/layout/questionsdetail_item.xml
new file mode 100644
index 0000000000..5d87351735
--- /dev/null
+++ b/app/src/main/res/layout/questionsdetail_item.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/questionsdetail_tag_item.xml b/app/src/main/res/layout/questionsdetail_tag_item.xml
new file mode 100644
index 0000000000..e6f5426fae
--- /dev/null
+++ b/app/src/main/res/layout/questionsdetail_tag_item.xml
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/questionsinvite_item.xml b/app/src/main/res/layout/questionsinvite_item.xml
new file mode 100644
index 0000000000..47ddac1baa
--- /dev/null
+++ b/app/src/main/res/layout/questionsinvite_item.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/questionsinvite_top_item.xml b/app/src/main/res/layout/questionsinvite_top_item.xml
new file mode 100644
index 0000000000..26b71f05ab
--- /dev/null
+++ b/app/src/main/res/layout/questionsinvite_top_item.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 138b9b556d..9162b4963b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -441,5 +441,6 @@
长按图片调整排序
恢复默认顺序
选择游戏
+ 邀请