Android 如何使ZXing条码扫描器不在全屏,而是在一个片段下面

Android 如何使ZXing条码扫描器不在全屏,而是在一个片段下面,android,fragment,fullscreen,zxing,Android,Fragment,Fullscreen,Zxing,我已经在肖像模式下制作了ZXing。现在我要让它出现在一个碎片下面。我怎么能这么做?它总是全屏的,这绝对不是我想要的。 非常感谢任何提示或样品 就像,但它是一个片段,它是一个条形码扫描仪 QRCodeReader.java: public class QRCodeReader extends Activity implements TopBar.OnFragmentInteractionListener, QRCodeReaderInner.OnFragmentInteractionListe

我已经在肖像模式下制作了ZXing。现在我要让它出现在一个碎片下面。我怎么能这么做?它总是全屏的,这绝对不是我想要的。 非常感谢任何提示或样品

就像,但它是一个片段,它是一个条形码扫描仪

QRCodeReader.java:

public class QRCodeReader extends Activity implements TopBar.OnFragmentInteractionListener, QRCodeReaderInner.OnFragmentInteractionListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.page_qrcodereader);

    FragmentManager fm = getFragmentManager();
    Fragment f = fm.findFragmentById(R.id.fragment_scanner);

    if (f == null) {
        f = QRCodeReaderInner.newInstance("param1", "param2");
        fm.beginTransaction().add(R.id.fragment_scanner, f).commit();
    }
}
...
}
pageqrcodereader.xml

<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">

<fragment
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:name="com.innoasia.kaytami.innoasia.ui.generic.TopBar"
    android:id="@+id/fragment" />

<fragment
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:name="com.innoasia.kaytami.innoasia.ui.page.QRCodeReaderInner"
    android:id="@+id/fragment_scanner" />
</LinearLayout>

查看以下内容:

您必须进行活动以扩展CaptureActivity。有一种覆盖方法称为
handleDecode(结果rawResult,位图条形码)
。您将在此处获得扫描结果

    public class ScanCard extends CaptureActivity {

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.scan_card);
       }
    @Override
    public void handleDecode(Result rawResult, Bitmap barcode) {
        // TODO Auto-generated method stub
        super.handleDecode(rawResult, barcode);
            mScanResult = rawResult.getText().toString();
            // Result After scanning the QR code.
        }
    }
    }
R.layout.scan\u card
xml文件中添加以下内容。我只是将扫描区域的宽度和高度设置为“300dip”,并根据您自己的大小进行调整

    <RelativeLayout
                android:id="@+id/relativeScanLayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center"
                android:orientation="vertical"
                android:padding="5dip" >

                <FrameLayout
                    android:id="@+id/frame_scan"
                    android:layout_width="300dip"
                    android:layout_height="300dip"
                    android:layout_centerInParent="true"
                    android:layout_gravity="center" >

                    <include layout="@layout/capture" />

                // Include the scanning area here

                </FrameLayout>

//在这里包括扫描区域

确保已将
Zxing项目
添加到构建路径中。
如果您有任何疑问,请告诉我。

您可以做的最简单的事情是修改ZXing库的capture.xml,并通过startActivityForResult或通过创建将为您的活动提供回调的接口对您的活动进行单击回调

下面是一个小例子,我做了些什么,使我的扫描仪看起来像是在一个活动中:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<SurfaceView
    android:id="@+id/preview_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="true" />

<com.google.zxing.client.android.ViewfinderView
    android:id="@+id/viewfinder_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/transparent" />

<LinearLayout
    android:id="@+id/result_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/result_view"
    android:orientation="vertical"
    android:padding="4dip"
    android:visibility="gone" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="top"
        android:orientation="horizontal"
        android:padding="12dip" >

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

            <ImageView
                android:id="@+id/barcode_image_view"
                android:layout_width="160dip"
                android:layout_height="wrap_content"
                android:layout_marginBottom="4dip"
                android:adjustViewBounds="true"
                android:maxHeight="160dip"
                android:maxWidth="160dip"
                android:scaleType="centerInside" />

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

                <TextView
                    android:id="@+id/format_text_view_label"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingRight="4dip"
                    android:text="@string/msg_default_format"
                    android:textColor="@color/result_minor_text"
                    android:textSize="14sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/format_text_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="@color/result_minor_text"
                    android:textSize="14sp" />
            </LinearLayout>

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

                <TextView
                    android:id="@+id/type_text_view_label"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingRight="4dip"
                    android:text="@string/msg_default_type"
                    android:textColor="@color/result_minor_text"
                    android:textSize="14sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/type_text_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="@color/result_minor_text"
                    android:textSize="14sp" />
            </LinearLayout>

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

                <TextView
                    android:id="@+id/time_text_view_label"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingRight="4dip"
                    android:text="@string/msg_default_time"
                    android:textColor="@color/result_minor_text"
                    android:textSize="14sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/time_text_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="@color/result_minor_text"
                    android:textSize="14sp" />
            </LinearLayout>

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

                <TextView
                    android:id="@+id/meta_text_view_label"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:paddingRight="4dip"
                    android:text="@string/msg_default_meta"
                    android:textColor="@color/result_minor_text"
                    android:textSize="14sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/meta_text_view"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textColor="@color/result_minor_text"
                    android:textSize="14sp" />
            </LinearLayout>
        </LinearLayout>

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

            <TextView
                android:id="@+id/contents_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:autoLink="web"
                android:paddingLeft="12dip"
                android:textColor="@color/result_text"
                android:textColorLink="@color/result_text"
                android:textSize="22sp" />
        </ScrollView>
    </LinearLayout>

</LinearLayout>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:background="@color/transparent"
    android:textColor="@color/status_text"
    android:textSize="14sp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:orientation="horizontal"
    android:paddingTop="4dp" >

    <ImageButton
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="10dp" />

    <ImageView
        android:layout_width="1sp"
        android:layout_height="match_parent"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:background="#3B6816" />

    <ImageButton
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:background="@null" />

    <ImageView
        android:layout_width="1sp"
        android:layout_height="match_parent"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:background="#3B6816" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal"
        android:padding="10dp" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@android:color/black"
            android:textStyle="bold" />
    </LinearLayout>
</LinearLayout>


让我知道这是否有助于您……

但我想问,使用您的方法,这是否意味着我不能将片段和扫描仪都放在同一页中?因为这是我最需要的。你可以在同一个视图中看到这一点,但你将面临的主要挑战是扫描框会变形,就像我遇到的一样。所以这更简单,更易于管理。是的,我的项目中包括了zxing。但是你能再解释一下吗?我不能完全赶上那个。现在我有一个叫做QRCodeReader的活动,它在顶部包含一个片段,另一个片段用于扫描仪(起初,我认为可以将扫描仪绑定在这个片段中。但是扫描仪只包含全屏,而不是片段区域…),所以现在,我想知道在我的情况下ScanCard对应什么?我应该如何修改我的代码?我在上面添加了我的代码以供参考。
ScanCard
是我的QRCode扫描活动,为您提供QRCodeReader。您可以在xml中包含``来设置屏幕。谢谢,但是我应该在哪里调用IntentIntegrator?在QRCOdeReader中,它已经扩展了CaptureActivity?感谢Rethinavel,我终于完成了它。很高兴有了这个平台,这样我就可以省下3天的时间来解决问题。非常感谢。@Derekyy很高兴它帮助了你。事实上,我们必须感谢肖恩·欧文,他完成了这个精彩的项目。:-)看到我的答案了吗?对一个类似的问题,我制作了条形码生成和扫描的代码。您可以按照以下步骤]获取逐步代码。