自定义扫描仪视图

时间:2018-07-02 04:36:55

标签: android qr-code barcode-scanner

在我的Android应用中使用Xzing Scanner View。

用于以下依赖项:

implementation 'me.dm7.barcodescanner:zxing:1.8.3'

当我运行该应用程序并打开扫描仪时,它会覆盖整个屏幕。 因此,问题是如何自定义Xzing扫描仪视图?

实际上,我必须添加标题,或者您可以说它是“扫描仪视图”上方的工具栏。

您可以在“扫描程序活动”中查看以下代码:

private ZXingScannerView mScannerView = null;
//Here, Seeting layout for Activity (Scanner View).
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);

所以,它打开如下:

enter image description here

因此,要添加标题,我已经做了类似的事情:

RelativeLayout.LayoutParams lprams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
mScannerView = new ZXingScannerView(getActivity());
lprams.addRule(RelativeLayout.BELOW, R.id.rel_header);
mScannerView.setLayoutParams(lprams);

但是,结果(输出)是相同的。 我该怎么办 ?请指导。谢谢。

1 个答案:

答案 0 :(得分:0)

我已经通过将ScannerActivity变成Fragment解决了它。 结帐:

 @Nullable
 @Override
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


  RelativeLayout.LayoutParams lprams = new RelativeLayout.LayoutParams(
  RelativeLayout.LayoutParams.WRAP_CONTENT,
  RelativeLayout.LayoutParams.WRAP_CONTENT);
  mScannerView = new ZXingScannerView(getActivity());
  lprams.addRule(RelativeLayout.BELOW, R.id.rel_header_one);
  mScannerView.setLayoutParams(lprams);


  if (savedInstanceState != null) {
     mFlash = savedInstanceState.getBoolean(FLASH_STATE, false);
     mAutoFocus = savedInstanceState.getBoolean(AUTO_FOCUS_STATE, true);
     mSelectedIndices = savedInstanceState.getIntegerArrayList(SELECTED_FORMATS);
     mCameraId = savedInstanceState.getInt(CAMERA_ID, -1);
  } else {
     mFlash = false;
     mAutoFocus = true;
     mSelectedIndices = null;
     mCameraId = -1;
  }
  return mScannerView;
 }

这很重要:返回mScannerView;

;)