diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 209453b7b7..c05e078519 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -112,9 +112,9 @@ public class DialogUtils { } public static void showCancelDialog(Context context, final ConfiremListener listener) { - Spanned content = Html.fromHtml("取消关注游戏后,您将无法及时收到游戏的" + + Spanned content = Html.fromHtml("取消关注游戏后,您将无法及时收到游戏" + "攻略、" + - "资讯等最新动态提醒"); + "资讯等最新动态提醒。"); showWarningDialog(context, "取消关注", content, "暂不取消", "确定取消", listener, null); } diff --git a/app/src/main/java/com/gh/common/util/ShareUtils.java b/app/src/main/java/com/gh/common/util/ShareUtils.java index 420527e874..78987a2ad6 100644 --- a/app/src/main/java/com/gh/common/util/ShareUtils.java +++ b/app/src/main/java/com/gh/common/util/ShareUtils.java @@ -86,12 +86,12 @@ public class ShareUtils { this.isPlugin = isPlugin; RelativeLayout contentView = new RelativeLayout(context); - contentView.setBackgroundColor(0x4c000000); + contentView.setBackgroundColor(0x8c000000); contentView.setFocusable(true); contentView.setFocusableInTouchMode(true); RecyclerView shareRecyclerView = new RecyclerView(context); - shareRecyclerView.setPadding(DisplayUtils.dip2px(context, 10), DisplayUtils.dip2px(context, 4), DisplayUtils.dip2px(context, 10), 0); + shareRecyclerView.setPadding(DisplayUtils.dip2px(context, 20), DisplayUtils.dip2px(context, 10), DisplayUtils.dip2px(context, 20), 0); shareRecyclerView.setBackgroundColor(Color.WHITE); //RecyclerView禁止滑动 @@ -106,7 +106,7 @@ public class ShareUtils { shareRecyclerView.setAdapter(new ShareRecyclerViewAdapter()); RelativeLayout.LayoutParams rlParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT - , DisplayUtils.dip2px(context, 192)); + , DisplayUtils.dip2px(context, 200)); rlParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); contentView.addView(shareRecyclerView,rlParams); @@ -141,7 +141,7 @@ public class ShareUtils { @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LinearLayout linearLayout = new LinearLayout(context); - linearLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, DisplayUtils.dip2px(context, 96))); + linearLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, DisplayUtils.dip2px(context, 90))); linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.setGravity(Gravity.CENTER_HORIZONTAL); linearLayout.setBackgroundResource(R.drawable.cardview_item_style); @@ -455,7 +455,7 @@ public class ShareUtils { @Override public void onLoadingComplete(String s, View view, Bitmap bitmap) { - msg.thumbData = Util.bmpToByteArray(bitmap, true); + msg.thumbData = Util.bmpToByteArray(bitmap, false); api.sendReq(req); } diff --git a/app/src/main/java/com/gh/common/util/TokenUtils.java b/app/src/main/java/com/gh/common/util/TokenUtils.java index 324ae4f9e0..027204588f 100644 --- a/app/src/main/java/com/gh/common/util/TokenUtils.java +++ b/app/src/main/java/com/gh/common/util/TokenUtils.java @@ -7,6 +7,7 @@ import android.net.wifi.WifiManager; import android.provider.Settings; import android.telephony.TelephonyManager; import android.text.TextUtils; +import android.os.Environment; import com.android.volley.Request; import com.android.volley.Response; @@ -20,6 +21,10 @@ import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; @@ -146,6 +151,166 @@ public class TokenUtils { } catch (IOException e) { e.printStackTrace(); } + + return null; + } + + public static void saveDeviceID(String deviceID, Context context){ + saveSharedPreferences(deviceID, context); + saveDataFile(deviceID, context); + svaeSDCard(deviceID, "/gh-uuid");//SDCard根目录 + svaeSDCard(deviceID, "/system");//SDCard system目录 + svaeSDCard(deviceID, "/data");//SDCard data目录 + } + + //将uuid存到sp + private static void saveSharedPreferences(String deviceID, Context context) { + SharedPreferences sp = context.getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); + SharedPreferences.Editor edit = sp.edit(); + edit.putString("uuid", deviceID); + edit.apply(); + Utils.log("saveDeviceID", "保存成功SP"); + } + + //将uuid存到data/data/PackageName/files文件夹下 + private static void saveDataFile(String deviceID, Context context) { + FileOutputStream fops; + try { + fops = context.openFileOutput("uuid", Context.MODE_PRIVATE); + fops.write(deviceID.getBytes()); + fops.close(); + Utils.log("saveDeviceID", "保存成功DataFile"); + } catch (Exception e) { + Utils.log("保存uuid到data/data/PackageName/files文件异常" + e.toString()); + e.printStackTrace(); + } + } + + //将uuid存到SD卡 + private static void svaeSDCard(String deviceID,String saveDir) { + File sdCardDir = Environment.getExternalStorageDirectory(); + String path = sdCardDir.getPath() + saveDir; + + File file = new File(path); + if (!file.exists()){ + file.mkdirs(); + } + + // 判断文件是否存在,存在则删除 + File uuidFile = new File(path +"/uuid"); + if (uuidFile.isFile() && uuidFile.exists()){ + Utils.log(saveDir + "文件夹里的文件存在,执行删除操作"); + uuidFile.delete(); + } + + File writeFile = new File(file, "uuid"); + FileOutputStream fos; + try { + fos = new FileOutputStream(writeFile); + fos.write(deviceID.getBytes()); + fos.close(); + Utils.log("saveDeviceID", "保存成功SDCard"+"目录为:"+saveDir); + } catch (Exception e) { + Utils.log("保存uuid到SDCard异常" + saveDir + e.toString()); + e.printStackTrace(); + } + + } + + // 启动助手时,检查uuid + public static void checkDeviceID(Context context) { + String uuid = loadSharedPreferences(context, false); + if (uuid == null) { + // 重新获取uuid,保存 + return; + } + // 检查 + if (loadSharedPreferences(context, true) == null){ + saveSharedPreferences(uuid, context); + } + if (loadDataFile(context ,true) == null){ + saveDataFile(uuid, context); + } + String[] dirName = {"/gh-uuid", "/system", "/data"}; + for (int i = 0; i< 3; i++) { + String s = loadSDCard(dirName[i]); + if (s == null) { + svaeSDCard(uuid, dirName[i]); + } + } + } + + public static String getDeviceID(Context context) { + return loadSharedPreferences(context, false); + } + + //读取SharedPreferences的uuid + private static String loadSharedPreferences(Context context, boolean isCheck) { + SharedPreferences sp = context.getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE); + String uuid = sp.getString("uuid", null); + if (isCheck){ + return uuid; + } + if (uuid == null){ + return loadDataFile(context, false); + } + Utils.log("getDeviceID", "获取成功SP" + uuid); + return uuid; + } + + //读取data/data/PackageName/files的uuid + private static String loadDataFile(Context context, boolean isCheck) { + File file = new File(context.getFilesDir(), "uuid"); + if (file.exists()){ + try { + FileInputStream fis = new FileInputStream(file); + byte[] b = new byte[1024]; + int count = -1; + String uuid = null; + while ((count = fis.read(b)) != -1) { + uuid = new String(b, 0, count, "UTF-8"); + } + Utils.log("getDeviceID", "获取成功DataFile"+ uuid); + return uuid; + } catch (Exception e) { + e.printStackTrace(); + } + }else if (!isCheck){ + String[] dirName = {"/gh-uuid", "/system", "/data"}; + for (int i = 0; i< 3; i++) { + String s = loadSDCard(dirName[i]); + if (s != null) { + return s; + } + } + } + return null; + } + + //读取SD卡的uuid + private static String loadSDCard(String saveDir){ + File sdCardDir = Environment.getExternalStorageDirectory(); + String path = sdCardDir.getPath() + saveDir; + File file = new File(path, "uuid"); + if (file.exists()){ + FileInputStream fis = null; + ByteArrayOutputStream bos = null; + try { + fis = new FileInputStream(file); + bos = new ByteArrayOutputStream(); + byte[] array = new byte[1024]; + int len = -1; + while( (len = fis.read(array)) != -1){ + bos.write(array,0,len); + } + bos.close(); + fis.close(); + Utils.log("getDeviceID", "获取成功SDCard"+"目录为:"+saveDir+"::"+bos.toString()); + return bos.toString(); + } catch (IOException e) { + e.printStackTrace(); + } + } return null; } diff --git a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java index 140703b774..e8b11ce5bf 100644 --- a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java @@ -109,7 +109,7 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen game_news_top_type_list.setAdapter(typeListAdapter); ViewGroup.LayoutParams params = game_news_top_type_list.getLayoutParams(); - params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(this, 37); + params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(this, 35)+ DisplayUtils.dip2px(this, 12); game_news_top_type_list.setLayoutParams(params); //禁止由于滑动出现的阴影 diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index 518131da4d..a2d6a49316 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -375,7 +375,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener map.put("page", "新闻详情"); DataCollectionManager.onEvent(this, "click-item", map); - String url = "http://news.ghzhushou.com/" + adapter.getNewsDetailEntity().getId() + String url = "http://www.ghzhushou.com/article/" + adapter.getNewsDetailEntity().getId() + ".html"; if (gameEntity == null){ showShare(url, adapter.getNewsDetailEntity().getTitle(), "http://image.ghzhushou.com/pic/56976f928ab49edc6e8b45f1.png", @@ -540,9 +540,11 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener public void onResponse(JSONObject response) { Gson gson = new Gson(); gameEntity = gson.fromJson(response.toString(), GameEntity.class); - adapter.setGameEntity(gameEntity); - adapter.notifyDataSetChanged(); - initDownload(); + if (adapter != null && gameEntity != null){ + adapter.setGameEntity(gameEntity); //出现空指针 找不到原因 + adapter.notifyDataSetChanged(); + initDownload(); + } } }, null); AppController.addToRequestQueue(gameRequest, NewsDetailActivity.class); diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 17440ff81c..0cbab5b6d5 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -129,7 +129,7 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener // 弹出确认对话框 private void showConfirmDialog(final String email) { - DialogUtils.showWarningDialog(this, "温馨提示", "填写联系方式有助于我们更好的一对一地解决您的问题,确定不填写吗?", + DialogUtils.showWarningDialog(this, "温馨提示", "填写联系方式有助于我们更好地一对一解决您的问题,确定不填写吗?", "直接提交", "我要填写", new DialogUtils.ConfiremListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java index 06f595a401..e109aac41c 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java @@ -106,7 +106,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { if (offset == 0){ newsList.clear(); } - if (list != null && list.size() != 0) { + if (list != null) { newsList.addAll(list); if (offset == 0) { game_news_list.scrollToPosition(1); @@ -158,7 +158,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { if (holder instanceof GameNewsTypeListViewHolder) { GameNewsTypeListViewHolder viewHolder = (GameNewsTypeListViewHolder) holder; ViewGroup.LayoutParams params = viewHolder.game_news_type_list.getLayoutParams(); - params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(context, 37); + params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(context, 35) + DisplayUtils.dip2px(context, 12); viewHolder.game_news_type_list.setLayoutParams(params); if (viewHolder.game_news_type_list.getAdapter() == null) { @@ -174,7 +174,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { // 第一个 if (position - 2 == 0) { viewHolder.news_line.setVisibility(View.GONE); - ((CardLinearLayout) holder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); +// ((CardLinearLayout) holder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); } else { viewHolder.news_line.setVisibility(View.VISIBLE); ((CardLinearLayout) holder.itemView).setmTop(0); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailAdapter.java index f6c8483868..2bc3ea5e67 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailAdapter.java @@ -546,10 +546,10 @@ public class GameDetailAdapter extends RecyclerView.Adapter { if (concernManager.isConcern(gameId)) { viewHolder.gamedetail_tv_concern.setText("取消关注"); viewHolder.gamedetail_tv_concern.setBackgroundResource(R.drawable.border_red_bg); - viewHolder.gamedetail_tv_concern.setTextColor(0xffbc2132); + viewHolder.gamedetail_tv_concern.setTextColor(Color.parseColor("#ff4147")); } else { viewHolder.gamedetail_tv_concern.setText("关注"); - viewHolder.gamedetail_tv_concern.setBackgroundResource(R.drawable.textview_red_style); + viewHolder.gamedetail_tv_concern.setBackgroundResource(R.drawable.textview_concern_red_style); viewHolder.gamedetail_tv_concern.setTextColor(0xffffffff); } @@ -584,7 +584,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter { concernManager.addByEntity(gameEntity); concern.setText("取消关注"); concern.setBackgroundResource(R.drawable.border_red_bg); - concern.setTextColor(0xffbc2132); + concern.setTextColor(Color.parseColor("#ff4147")); Toast.makeText(context, "关注成功", Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java index 247dc0471b..aad3fd4ca0 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java +++ b/app/src/main/java/com/gh/gamecenter/news/News4Fragment.java @@ -82,7 +82,8 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On news_swipe_refresh.setRefreshing(true); news_rv_show.setVisibility(View.VISIBLE); news_pb_loading.setVisibility(View.VISIBLE); - adapter.init(true); + adapter = new News4FragmentAdapter(News4Fragment.this, true); + news_rv_show.setAdapter(adapter); } //Fragment界面切换事件 @@ -156,6 +157,9 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On if (reuse_none_data.getVisibility() == View.VISIBLE){ reuse_none_data.setVisibility(View.GONE); } + if (news_swipe_refresh != null){ + news_swipe_refresh.setEnabled(true); + } } @Override @@ -169,6 +173,9 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On if (reuse_none_data.getVisibility() == View.VISIBLE){ reuse_none_data.setVisibility(View.GONE); } + if (news_swipe_refresh != null){ + news_swipe_refresh.setEnabled(false); + } news_rv_show.setVisibility(View.GONE); reuse_no_connection.setVisibility(View.VISIBLE); } @@ -178,7 +185,10 @@ public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.On if (news_pb_loading.getVisibility() == View.VISIBLE) { news_pb_loading.setVisibility(View.GONE); } -// news_rv_show.setVisibility(View.GONE); //隐藏列表会导致 空白页面无法刷新 + if (news_swipe_refresh != null){ + news_swipe_refresh.setEnabled(false); + } + news_rv_show.setVisibility(View.GONE); reuse_none_data.setVisibility(View.VISIBLE); news_swipe_refresh.setRefreshing(false); } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java index 2aead5ba1d..260a537e11 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameDetailFragment.java @@ -31,7 +31,7 @@ public class SearchGameDetailFragment extends Fragment { view = View.inflate(getActivity(), R.layout.fm_search, null); TextView reuse_tv_none_data = (TextView) view.findViewById(R.id.reuse_tv_none_data); - reuse_tv_none_data.setText("搜索为空"); + reuse_tv_none_data.setText("搜索结果为空"); search_loading = (LinearLayout) view.findViewById(R.id.search_gamedetail_ll_loading); reuse_none_date = (LinearLayout) view.findViewById(R.id.reuse_none_data); diff --git a/app/src/main/res/drawable/border_red_bg.xml b/app/src/main/res/drawable/border_red_bg.xml index 6b0bfcc73f..a8135e8f57 100644 --- a/app/src/main/res/drawable/border_red_bg.xml +++ b/app/src/main/res/drawable/border_red_bg.xml @@ -4,9 +4,9 @@ + android:color="#ff4147" /> - + diff --git a/app/src/main/res/drawable/oval_hint_red_bg.xml b/app/src/main/res/drawable/oval_hint_red_bg.xml index fc203d2815..22e41bd103 100644 --- a/app/src/main/res/drawable/oval_hint_red_bg.xml +++ b/app/src/main/res/drawable/oval_hint_red_bg.xml @@ -2,6 +2,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_concern_red_dn.xml b/app/src/main/res/drawable/textview_concern_red_dn.xml new file mode 100644 index 0000000000..2e27ca8a3f --- /dev/null +++ b/app/src/main/res/drawable/textview_concern_red_dn.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_concern_red_style.xml b/app/src/main/res/drawable/textview_concern_red_style.xml new file mode 100644 index 0000000000..3f67ec1adf --- /dev/null +++ b/app/src/main/res/drawable/textview_concern_red_style.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_concern_red_up.xml b/app/src/main/res/drawable/textview_concern_red_up.xml new file mode 100644 index 0000000000..9a4ba9057f --- /dev/null +++ b/app/src/main/res/drawable/textview_concern_red_up.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/textview_orange_dn.xml b/app/src/main/res/drawable/textview_orange_dn.xml index 2062580199..15d34b8118 100644 --- a/app/src/main/res/drawable/textview_orange_dn.xml +++ b/app/src/main/res/drawable/textview_orange_dn.xml @@ -3,7 +3,7 @@ - + diff --git a/app/src/main/res/drawable/textview_orange_up.xml b/app/src/main/res/drawable/textview_orange_up.xml index 09ec5d8531..3a77803f50 100644 --- a/app/src/main/res/drawable/textview_orange_up.xml +++ b/app/src/main/res/drawable/textview_orange_up.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/drawable/textview_red_dn.xml b/app/src/main/res/drawable/textview_red_dn.xml index 2e27ca8a3f..a444c499fa 100644 --- a/app/src/main/res/drawable/textview_red_dn.xml +++ b/app/src/main/res/drawable/textview_red_dn.xml @@ -3,7 +3,7 @@ - + diff --git a/app/src/main/res/drawable/textview_red_up.xml b/app/src/main/res/drawable/textview_red_up.xml index 14e1d3dc05..830aeffc30 100644 --- a/app/src/main/res/drawable/textview_red_up.xml +++ b/app/src/main/res/drawable/textview_red_up.xml @@ -2,7 +2,7 @@ - + diff --git a/app/src/main/res/layout/activity_game_news.xml b/app/src/main/res/layout/activity_game_news.xml index e8c6649ab9..2619a04c0f 100644 --- a/app/src/main/res/layout/activity_game_news.xml +++ b/app/src/main/res/layout/activity_game_news.xml @@ -24,8 +24,8 @@ android:background="@color/background" android:paddingLeft="10dp" android:paddingRight="10dp" - android:paddingTop="3dp" - android:paddingBottom="3dp" + android:paddingTop="5dp" + android:paddingBottom="10dp" android:visibility="gone"> diff --git a/app/src/main/res/layout/game_news_search_item.xml b/app/src/main/res/layout/game_news_search_item.xml index 76ebc2e5b8..6852e48d77 100644 --- a/app/src/main/res/layout/game_news_search_item.xml +++ b/app/src/main/res/layout/game_news_search_item.xml @@ -6,7 +6,7 @@ android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="16dp" - android:layout_marginBottom="8dp"> + android:layout_marginBottom="5dp"> + android:paddingTop="5dp" + android:paddingBottom="10dp"> \ No newline at end of file diff --git a/app/src/main/res/layout/gamedetail_item_intro.xml b/app/src/main/res/layout/gamedetail_item_intro.xml index bf5c5891a2..d2684654cb 100644 --- a/app/src/main/res/layout/gamedetail_item_intro.xml +++ b/app/src/main/res/layout/gamedetail_item_intro.xml @@ -11,7 +11,7 @@ app:contentPaddingBottom="15dp" app:contentPaddingLeft="12dp" app:contentPaddingRight="12dp" - app:contentPaddingTop="15dp" + app:contentPaddingTop="12dp" app:cardBackgroundColor="@android:color/white"> + android:textSize="16dp" /> @@ -22,7 +22,7 @@ + android:layout_marginBottom="12dp"> + android:textSize="16dp" /> + android:layout_marginBottom="12dp"> + android:textSize="16dp" /> + android:gravity="center_vertical">