修复bug
huangwei 9 months ago
parent 8e50864765
commit e552c6d3fc
  1. 5
      app/src/main/AndroidManifest.xml
  2. 266
      app/src/main/java/com/bingce/controlnetwork/activity/MainActivity.java
  3. 62
      app/src/main/java/com/bingce/controlnetwork/activity/ViewRecentCrashActivity.java
  4. 10
      app/src/main/java/com/bingce/controlnetwork/newui/configfragment/ConfigFragment.kt
  5. 9
      app/src/main/java/com/bingce/controlnetwork/newui/mefragment/MeFragment.kt
  6. 101
      app/src/main/java/com/bingce/controlnetwork/util/CrashCollectUtils.java
  7. 21
      app/src/main/java/com/bingce/controlnetwork/util/SelectDeviceTypeUtil.java
  8. 21
      app/src/main/res/layout/activity_view_recent_crash_log.xml
  9. 34
      app/src/main/res/layout/new_fragment_config.xml
  10. 37
      app/src/main/res/layout/new_fragment_me.xml
  11. BIN
      app/src/main/res/mipmap-xxhdpi/ic_level_connect.png

@ -211,7 +211,10 @@
android:name=".func.level.idetection.LevelIDetectionStationSettingActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="i角检测" />
<activity
android:name=".activity.ViewRecentCrashActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/view_recent_log" />
</application>
</manifest>

@ -5,7 +5,6 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
@ -44,12 +43,10 @@ import com.bingce.controlnetwork.activity.backup.launch.BackupImportHelper;
import com.bingce.controlnetwork.activity.user.LoginActivity;
import com.bingce.controlnetwork.activity.user.RegisterActivity;
import com.bingce.controlnetwork.activity.user.UserInfoActivity;
import com.bingce.controlnetwork.bean.MainUserBean;
import com.bingce.controlnetwork.fragment.MainSurveyFragment;
import com.bingce.controlnetwork.fragment.ProjectListFragment;
import com.bingce.controlnetwork.newui.configfragment.ConfigFragment;
import com.bingce.controlnetwork.newui.mefragment.MeFragment;
import com.bingce.controlnetwork.util.CheckControlUpdateUtil;
import com.bingce.controlnetwork.viewmodel.MainActivityViewModel;
import com.bingce.data.sync.GlobalFlowCenter;
import com.bingce.data.sync.utils.LeanCloudConfigLoader;
@ -63,21 +60,15 @@ import com.bingce.surveyor.agentweb.AgentWebActivity;
import com.bingce.totalstation.TotalStation;
import com.bingce.ui.TabEntity;
import com.bingce.utils.ColorUtil;
import com.bingce.utils.CrashCollector;
import com.bingce.utils.DateUtils;
import com.bingce.utils.LCDeviceUtil;
import com.bingce.utils.SdkUtils;
import com.bingce.utils.ServiceDateUtils;
import com.bingce.utils.SoundPoolUtil;
import com.bingce.utils.StringUtil;
import com.bingce.utils.ThreadPoolUtil;
import com.bingce.utils.Util;
import com.bingce.utils.VipManager;
import com.daimajia.numberprogressbar.NumberProgressBar;
import com.flyco.tablayout.CommonTabLayout;
import com.flyco.tablayout.listener.CustomTabEntity;
import com.flyco.tablayout.listener.OnTabSelectListener;
import com.jkyeo.splashview.SplashView;
import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.material_design_iconic_typeface_library.MaterialDesignIconic;
import com.tencent.mm.opensdk.openapi.IWXAPI;
@ -98,11 +89,9 @@ import java.util.List;
import blankj.utilcode.util.ActivityUtils;
import blankj.utilcode.util.ServiceUtils;
import blankj.utilcode.util.StringUtils;
import blankj.utilcode.util.ToastUtils;
import blankj.utilcode.util.Utils;
import cn.leancloud.LCException;
import cn.leancloud.LCFile;
import cn.leancloud.LCObject;
import cn.leancloud.LCQuery;
import cn.leancloud.LCUser;
@ -163,19 +152,6 @@ public class MainActivity extends BaseMainActivity implements Device.IDeviceConn
}
});
}
updateHeaderResult();
LCDeviceUtil.updateDeviceInfo("controlnetwork", ((App) Utils.getApp()).registerCodeV2, null);
checkAgreementPermission();
//解决某个版本的bug:
//由于升级数据库,导致限差方案丢失,所以启动的时候检测所有project,为没有限差的项目重新添加限差
// DatabaseFixUtils.changeDefaultTolerance();
//尝试上传crashLog
ThreadPoolUtil.execute(() -> CrashCollector.tryUploadCrashLogInWorkerThread(this, CrashCollector.APP_LABEL_CONTROL));
LeanCloudConfigLoader.loadLeanCloudConfig();
}
/**
@ -475,14 +451,6 @@ public class MainActivity extends BaseMainActivity implements Device.IDeviceConn
//如果是从其他Activity返回到MainActivity时,不显示广告,如果是从后台切换出来,检查并显示广告;
//一定放到super.onResume前,否则TopActivity始终是MainActivity,因为App的onActivityResumed在super.onResume内执行
if (((App) Utils.getApp()).isUserStatusChanged) {
((App) Utils.getApp()).isUserStatusChanged = false;
// if (drawerLeft != null)
// drawerLeft.openDrawer();
// if (accountHeader != null)
// accountHeader.toggleSelectionList(MainActivity.this);
updateHeaderResult();
}
//按照设置选项,保持屏幕常亮,放在onResume而不放在onCreate里是因为,用户更改设置后返回主页就要开始常亮了
boolean isWakeLock = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_is_wake_lock", false);
if (isWakeLock) {
@ -693,240 +661,6 @@ public class MainActivity extends BaseMainActivity implements Device.IDeviceConn
}
}
/**
* 教程列表
*/
public void showTutorialListDialog() {
new MaterialDialog.Builder(this)
.title(R.string.video_tutorial)
.items(new String[]{getString(R.string.bilibili)
, getString(R.string.tencent_video)
, getString(R.string.baidudisk)
, getString(R.string.surveyor_home)})
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
switch (which) {
case 0:
// Intent intent1 = new Intent();
// intent1.setClass(Utils.getApp(), AgentWebActivity.class);
// intent1.putExtra("short_url", "android_url_bilibili_tutorial");
// startActivity(intent1);
AgentWebActivity.navigation2(
MainActivity.this, "android_url_bilibili_tutorial"
);
break;
case 1:
// Intent intent2 = new Intent();
// intent2.setClass(Utils.getApp(), AgentWebActivity.class);
// intent2.putExtra("short_url", "android_url_tencent_video_tutorial");
// startActivity(intent2);
AgentWebActivity.navigation2(
MainActivity.this, "android_url_tencent_video_tutorial"
);
break;
case 2:
// Intent intent3 = new Intent();
// intent3.setClass(Utils.getApp(), AgentWebActivity.class);
// intent3.putExtra("short_url", "android_url_baidu_pan_tutorial");
// startActivity(intent3);
AgentWebActivity.navigation2(
MainActivity.this, "android_url_baidu_pan_tutorial"
);
break;
case 3:
// Intent intent4 = new Intent();
// intent4.setClass(Utils.getApp(), AgentWebActivity.class);
// intent4.putExtra("short_url", "android_url_surveyor_home");
// startActivity(intent4);
AgentWebActivity.navigation2(
MainActivity.this, "android_url_surveyor_home"
);
break;
}
}
}).show();
}
/**
* 刷新左侧用户信息
*/
public void updateHeaderResult() {
Log.d("updateHeaderResult", "updateHeaderResult");
// if (drawerLeft == null || accountHeader == null)
// return;
// for (int i = accountHeader.getProfiles().size() - 1; i >= 0; i--) {
// accountHeader.removeProfile(accountHeader.getProfiles().get(i));
// }
// if (LCUser.getCurrentUser() == null || !LCUser.getCurrentUser().isAuthenticated()) {
// accountHeader.addProfiles(
// new ProfileSettingDrawerItem().withName(getString(R.string.log_in))
// .withIcon(new IconicsDrawable(this).icon(MaterialDesignIconic.Icon.gmi_sign_in).paddingDp(5))
// .withIdentifier(1000).withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
// @Override
// public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
// Intent intent = new Intent(Utils.getApp(), LoginActivity.class);
// intent.putExtra("finishTo", UserInfoActivity.class.getName());
// startActivity(intent);
// return false;
// }
// }));
// } else {
// accountHeader.addProfiles(new ProfileSettingDrawerItem().withName(getString(R.string.user_info)).withIcon(new IconicsDrawable(this).icon(MaterialDesignIconic.Icon.gmi_account).paddingDp(5)).withIdentifier(1000).withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
// @Override
// public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
// startActivity(new Intent(MainActivity.this, UserInfoActivity.class));
// return false;
// }
// }));
// }
updateProfileItem();
}
private void updateProfileItem() {
if (LCUser.getCurrentUser() != null) {
String nickname = LCUser.getCurrentUser().getString("nickname");
LCFile avatarFile = LCUser.getCurrentUser().getLCFile("avatar");
if (!StringUtils.isEmpty(nickname)) {
// ProfileDrawerItem item = new ProfileDrawerItem().withName(nickname).withEmail(LCUser.getCurrentUser().getUsername()).withIdentifier(1003);
// if (avatarFile == null) {
// item.withIcon(R.drawable.app_logo);
// } else {
// item.withIcon(avatarFile.getUrl());
// }
// accountHeader.addProfiles(item);
String avatarUrl = null;
if (avatarFile != null) {
avatarUrl = avatarFile.getUrl();
}
mainActivityViewModel.getRefreshLoginUserLiveData().setValue(
new MainUserBean(LCUser.getCurrentUser().getUsername(),
nickname, avatarUrl));
} else {
LCObject userProfile = LCUser.getCurrentUser().getLCObject("profile");
if (userProfile != null) {
userProfile.fetchInBackground().subscribe(new Observer<LCObject>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(LCObject avObject) {
if (isFinishing()) return;
String nickname = avObject.getString("nickname");
LCFile avatarFile = avObject.getLCFile("avatar");
if (!StringUtils.isEmpty(nickname)) {
// ProfileDrawerItem item = new ProfileDrawerItem().withName(nickname).withEmail(LCUser.getCurrentUser().getUsername()).withIdentifier(1003);
// if (avatarFile == null) {
// item.withIcon(R.drawable.app_logo);
// } else {
// item.withIcon(avatarFile.getUrl());
// }
// accountHeader.addProfiles(item);
//保存到_User,下次不再查Profile
LCUser.getCurrentUser().put("nickname", nickname);
String avatarUrl = null;
if (avatarFile != null) {
LCUser.getCurrentUser().put("avatar", avatarFile);
avatarUrl = avatarFile.getUrl();
}
LCUser.getCurrentUser().saveInBackground().subscribe();
mainActivityViewModel.getRefreshLoginUserLiveData().setValue(
new MainUserBean(LCUser.getCurrentUser().getUsername(),
nickname, avatarUrl));
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
} else {
new LCQuery<>("Profile")
.whereEqualTo("creatorId", LCUser.getCurrentUser().getObjectId())
.findInBackground()
.subscribe(new Observer<List<LCObject>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(List<LCObject> list) {
if (isFinishing()) return;
if (list != null && !list.isEmpty()) {
String nickname = list.get(0).getString("nickname");
LCFile avatarFile = list.get(0).getLCFile("avatar");
if (!StringUtils.isEmpty(nickname)) {
// ProfileDrawerItem item = new ProfileDrawerItem().withName(nickname).withEmail(LCUser.getCurrentUser().getUsername()).withIdentifier(1003);
// if (avatarFile == null) {
// item.withIcon(R.drawable.app_logo);
// } else {
// item.withIcon(avatarFile.getUrl());
// }
// accountHeader.addProfiles(item);
String avatarUrl = null;
//保存到_User,下次不再查Profile
LCUser.getCurrentUser().put("nickname", nickname);
if (avatarFile != null) {
LCUser.getCurrentUser().put("avatar", avatarFile);
avatarUrl = avatarFile.getUrl();
}
LCUser.getCurrentUser().saveInBackground().subscribe();
mainActivityViewModel.getRefreshLoginUserLiveData().setValue(
new MainUserBean(LCUser.getCurrentUser().getUsername(),
nickname, avatarUrl));
}
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}
} else {
// accountHeader.addProfiles(new ProfileDrawerItem().withEmail(getString(R.string.click_avatar_to_log_in)).withIcon(R.drawable.app_logo).withIdentifier(1003));
mainActivityViewModel.getRefreshLoginUserLiveData().setValue(
new MainUserBean(null,
null, null));
}
}
/**
* 开启左侧菜单
*/
public void openLeftDrawer() {
// if (drawerLeft != null)
// drawerLeft.openDrawer();
}
@Override
public void onDeviceConnectLost() {
mainActivityUtils.onDeviceConnectLost();

@ -0,0 +1,62 @@
package com.bingce.controlnetwork.activity;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.MenuItem;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import com.bingce.controlnetwork.R;
import com.bingce.controlnetwork.util.CrashCollectUtils;
import com.bingce.utils.ThreadPoolUtil;
import org.polaric.colorful.ColorfulActivity;
public class ViewRecentCrashActivity extends ColorfulActivity {
@SuppressLint("SourceLockedOrientationActivity")
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_recent_crash_log);
Toolbar mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
if (getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
TextView textView = findViewById(R.id.tv_content);
if (textView != null) {
ThreadPoolUtil.execute(() -> {
CrashCollectUtils.collectCrashLogInWorkerThread((cloudTable, appLabelKey, fileNameKey, contentKey, uuidKey, crashContent) -> {
if (!TextUtils.isEmpty(crashContent)) {
runOnUiThread(() -> textView.setText(crashContent));
}
});
});
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
public static void start(Context context) {
Intent intent = new Intent(context, ViewRecentCrashActivity.class);
context.startActivity(intent);
}
}

@ -30,10 +30,12 @@ class ConfigFragment : BaseFragmentBinding<NewFragmentConfigBinding>() {
//管理
mBinding.ilInstrumentManagement.iv.setImageResource(R.mipmap.icon_ts_connecting)
mBinding.ilInstrumentManagement.tv.setText(R.string.total_station_online)
mBinding.ilLevelConnect.iv.setImageResource(R.mipmap.ic_level_connect)
mBinding.ilLevelConnect.tv.text = "水准仪联机"
mBinding.ilPrismManagement.iv.setImageResource(R.mipmap.icon_prism_manager)
mBinding.ilPrismManagement.tv.setText(R.string.prism_manager)
mBinding.ilCustomTolerance.iv.setImageResource(R.mipmap.ic_tolerance_24)
mBinding.ilCustomTolerance.tv.setText("自定义限差")
mBinding.ilCustomTolerance.tv.text = "自定义限差"
//三角导线联系测量
mBinding.ilExportMeasure.iv.setImageResource(R.mipmap.ic_export)
mBinding.ilExportMeasure.tv.setText(R.string.export)
@ -56,7 +58,11 @@ class ConfigFragment : BaseFragmentBinding<NewFragmentConfigBinding>() {
// val intent = Intent(activity, ConnectTSActivity::class.java)
// intent.putExtra("customChannel", AppChannel.customChannel)
// startActivity(intent)
SelectDeviceTypeUtil.showDeviceTypeDialog()
SelectDeviceTypeUtil.connectTsActivity()
}
mBinding.ilLevelConnect.root.setOnClickListener {
//水准仪联机
SelectDeviceTypeUtil.connectLevelActivity()
}
mBinding.ilPrismManagement.root.setOnClickListener {
//棱镜管理

@ -15,6 +15,7 @@ import cn.leancloud.LCUser
import com.bingce.controlnetwork.R
import com.bingce.controlnetwork.activity.AboutActivity
import com.bingce.controlnetwork.activity.SettingsActivity
import com.bingce.controlnetwork.activity.ViewRecentCrashActivity
import com.bingce.controlnetwork.activity.backup.BackupExportActivity
import com.bingce.controlnetwork.activity.backup.launch.BackupImportHelper
import com.bingce.controlnetwork.activity.user.LoginActivity
@ -22,7 +23,6 @@ import com.bingce.controlnetwork.activity.user.UserInfoActivity
import com.bingce.controlnetwork.databinding.NewFragmentMeBinding
import com.bingce.controlnetwork.newui.base.BaseFragmentBinding
import com.bingce.controlnetwork.viewmodel.MainActivityViewModel
import com.bingce.surveyor.agentweb.AgentWebActivity
import com.bumptech.glide.Glide
/**
@ -84,6 +84,8 @@ class MeFragment : BaseFragmentBinding<NewFragmentMeBinding>() {
}
mBinding.llAbout.setOnClickListener {
//关于
Log.d("hwhw", "ss" + 5 / 0)
startActivity(Intent(requireContext(), AboutActivity::class.java))
}
mBinding.llUser.setOnClickListener {
@ -95,6 +97,11 @@ class MeFragment : BaseFragmentBinding<NewFragmentMeBinding>() {
startActivity(intent)
}
}
mBinding.llViewException.setOnClickListener {
//查看异常
startActivity(Intent(requireContext(), ViewRecentCrashActivity::class.java))
}
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {

@ -0,0 +1,101 @@
package com.bingce.controlnetwork.util;
import android.content.Context;
import com.bingce.utils.FileUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import blankj.utilcode.util.FileUtils;
import blankj.utilcode.util.Utils;
public class CrashCollectUtils {
public static File crashLogFolder(Context context) {
File cacheFolder = context.getExternalCacheDir();
if (!cacheFolder.exists() || cacheFolder.isFile()) {
cacheFolder.mkdir();
}
File dir = new File(cacheFolder, "crash");
if (!dir.exists() || dir.isFile()) {
dir.mkdir();
}
return dir;
}
//收集崩溃日志,在处理完成后根据结果删除
public static void collectCrashLogInWorkerThread(ICrashLogCollectListener listener) {
File dir = crashLogFolder(Utils.getApp().getApplicationContext());
//读取其下面的数据
if (!dir.exists() || dir.isFile()) {
return;
}
StringBuilder sb = new StringBuilder();
File[] files = dir.listFiles();
if (files != null) {
List<File> needMoveFileList = new ArrayList<>();
File lastFile = null;
for (File file : files) {
if (file == null || !file.isFile()) {
continue;
}
if (lastFile == null) {
lastFile = file;
} else {
if (file.lastModified() > lastFile.lastModified()) {
lastFile = file;
}
}
needMoveFileList.add(file);
}
needMoveFileList.remove(lastFile);
for (File file : needMoveFileList) {
moveToBackedUpFolder(dir, file);
}
if (lastFile != null) {
FileUtil.ReadFileResult readFileResult = FileUtil.readStringFrom(lastFile);
if (readFileResult.success) {
sb.append(readFileResult.string).append("\n");
}
}
}
String CRASH_LOG_TABLE = "CloudCrashLog";
final String contentKey = "crash_content";
final String fileNameKey = "file_name";
final String appLabelKey = "app";
final String uuidKey = "UUID";
listener.onCollected(CRASH_LOG_TABLE, appLabelKey, fileNameKey, contentKey, uuidKey, sb.toString());
}
private static void moveToBackedUpFolder(File dir, File targetLogFile) {
File repeatedFolder = new File(dir, "BACKED_UP");
if (!repeatedFolder.exists()) {
repeatedFolder.mkdirs();
}
FileUtils.move(targetLogFile, new File(repeatedFolder, targetLogFile.getName()));
}
public interface ICrashLogCollectListener {
void onCollected(String cloudTable, String appLabelKey, String fileNameKey, String contentKey, String uuidKey,
String content);
}
public static class CrashItem {
public final File file;
public final String content;
CrashItem(File file, String content) {
this.file = file;
this.content = content;
}
}
}

@ -21,18 +21,27 @@ public class SelectDeviceTypeUtil {
public void onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text) {
switch (which) {
case 0:
Intent intent = new Intent(ActivityUtils.getTopActivity(), ConnectTSActivity.class);
intent.putExtra("customChannel", AppChannel.customChannel);
ActivityUtils.getTopActivity().startActivity(intent);
connectTsActivity();
break;
case 1:
Intent intent2 = new Intent(ActivityUtils.getTopActivity(), ConnectLevelActivity.class);
intent2.putExtra("customChannel", AppChannel.customChannel);
ActivityUtils.getTopActivity().startActivity(intent2);
connectLevelActivity();
break;
}
}
}).show();
}
public static void connectTsActivity() {
Intent intent = new Intent(ActivityUtils.getTopActivity(), ConnectTSActivity.class);
intent.putExtra("customChannel", AppChannel.customChannel);
ActivityUtils.getTopActivity().startActivity(intent);
}
public static void connectLevelActivity() {
Intent intent2 = new Intent(ActivityUtils.getTopActivity(), ConnectLevelActivity.class);
intent2.putExtra("customChannel", AppChannel.customChannel);
ActivityUtils.getTopActivity().startActivity(intent2);
}
}

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp">
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp" />
</ScrollView>
</LinearLayout>

@ -35,6 +35,14 @@
android:layout_height="wrap_content"
android:layout_weight="1" />
<include
android:id="@+id/ilLevelConnect"
layout="@layout/new_item_config"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_weight="1" />
<include
android:id="@+id/ilPrismManagement"
layout="@layout/new_item_config"
@ -43,14 +51,38 @@
android:layout_marginStart="12dp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:orientation="horizontal"
android:weightSum="3">
<include
android:id="@+id/ilCustomTolerance"
layout="@layout/new_item_config"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_weight="1" />
<include
layout="@layout/new_item_config"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_weight="1"
android:visibility="invisible" />
<include
layout="@layout/new_item_config"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_weight="1"
android:visibility="invisible" />
</LinearLayout>
<TextView

@ -213,6 +213,43 @@
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginHorizontal="20dp"
android:background="@color/hor_line" />
<LinearLayout
android:id="@+id/llViewException"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="12dp">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@mipmap/ic_view_exception" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_weight="1"
android:text="查看异常"
android:textColor="@color/text_color_1"
android:textSize="@dimen/text_size_one" />
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:padding="6dp"
android:src="@drawable/ic_arrow_to_right_dark" />
</LinearLayout>
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Loading…
Cancel
Save