自定义捕获布局zxing条码扫描器

时间:2015-02-16 18:50:02

标签: android

我试图让自定义布局不占用应用程序的全屏但是当我修改某些布局时它会崩溃

我使用这个库: https://github.com/journeyapps/zxing-android-embedded#adding-aar-dependency-with-gradle

自定义布局:

<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright (C) 2008 ZXing authors
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
      http://www.apache.org/licenses/LICENSE-2.0
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 -->
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <SurfaceView android:id="@+id/zxing_preview_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

    <com.google.zxing.client.android.ViewfinderView
        android:id="@+id/zxing_viewfinder_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

    <LinearLayout android:id="@+id/zxing_result_view"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/zxing_result_view"
        android:visibility="gone"
        android:baselineAligned="false">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="@dimen/zxing_standard_padding">

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:gravity="right|center_vertical">

                <ImageView android:id="@+id/zxing_barcode_image_view"
                    android:layout_width="160dip"
                    android:layout_height="wrap_content"
                    android:maxWidth="160dip"
                    android:maxHeight="160dip"
                    android:layout_marginBottom="@dimen/zxing_half_padding"
                    android:adjustViewBounds="true"
                    android:scaleType="centerInside"
                    tools:ignore="ContentDescription"/>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <TextView android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/zxing_msg_default_format"
                        android:textColor="@color/zxing_result_minor_text"
                        android:textStyle="bold"
                        android:paddingRight="@dimen/zxing_half_padding"/>

                    <TextView android:id="@+id/zxing_format_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_minor_text"/>

                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <TextView android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/zxing_msg_default_type"
                        android:textColor="@color/zxing_result_minor_text"
                        android:textStyle="bold"
                        android:paddingRight="@dimen/zxing_half_padding"/>

                    <TextView android:id="@+id/zxing_type_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_minor_text"/>

                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <TextView android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/zxing_msg_default_time"
                        android:textColor="@color/zxing_result_minor_text"
                        android:textStyle="bold"
                        android:paddingRight="@dimen/zxing_half_padding"/>

                    <TextView android:id="@+id/zxing_time_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_minor_text"/>

                </LinearLayout>

                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                    <TextView android:id="@+id/zxing_meta_text_view_label"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/zxing_msg_default_meta"
                        android:textColor="@color/zxing_result_minor_text"
                        android:textStyle="bold"
                        android:paddingRight="@dimen/zxing_half_padding"/>

                    <TextView android:id="@+id/zxing_meta_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_minor_text"/>

                </LinearLayout>

            </LinearLayout>

            <ScrollView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">

                    <TextView android:id="@+id/zxing_contents_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_text"
                        android:textColorLink="@color/zxing_result_text"
                        android:textSize="22sp"
                        android:paddingLeft="12dip"
                        android:autoLink="web"
                        android:textIsSelectable="true"/>

                    <TextView android:id="@+id/zxing_contents_supplement_text_view"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textColor="@color/zxing_result_text"
                        android:textColorLink="@color/zxing_result_text"
                        android:paddingLeft="12dip"
                        android:autoLink="web"
                        android:textIsSelectable="true"/>

                </LinearLayout>

            </ScrollView>

        </LinearLayout>

        <LinearLayout android:id="@+id/zxing_result_button_view"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center">

            <Button style="@style/zxing_ResultButton"
                android:visibility="gone"/>

            <Button style="@style/zxing_ResultButton"
                android:visibility="gone"/>

            <Button style="@style/zxing_ResultButton"
                android:visibility="gone"/>

            <Button style="@style/zxing_ResultButton"
                android:visibility="gone"/>

        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_gravity="bottom|center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView android:id="@+id/zxing_status_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:background="@color/zxing_transparent"
            android:text="@string/zxing_msg_default_status"
            android:textColor="@color/zxing_status_text"/>

        <Button android:id="@id/zxing_back_button"
            android:layout_marginTop="10dp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:height="60dp"
            android:textAlignment="center"
            android:layout_gravity="bottom|center_horizontal"
            android:text="@string/zxing_button_cancel"/>

    </LinearLayout>

</merge>

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我可以说是库在加载布局时尝试使用zxing_前缀获取所有这些视图,因此如果库找不到所有这些视图,它会在尝试时抛出异常调用它们的方法。因此,为了解决这个问题,我在我的布局中包含了所有的zxing_视图,并将可见性设置为&#34;去了&#34;在所有这些我想不展示的地方。