用图像按钮替换按钮

时间:2016-01-26 22:25:36

标签: android bluetooth

所以我正在处理一些朋友离开我的代码(我对这些东西知之甚少)并且对Buttons和ImageButtons有疑问;

此代码适用于要求您点击“连接”的应用。按钮进入蓝牙设备列表。选择后,您将返回主屏幕,按钮现在显示“断开连接”。

基本上,我想要做的是将它从基于文本的按钮更改为图像按钮,这样我就可以拥有蓝牙图标(黑色),并在连接时更改为连接的蓝牙图标(白色)。

我有图标,我理解典型按钮的基本工作方式,但这段代码对我来说有点多了。任何帮助将不胜感激!

我附上了java的初始样本以供参考。 btnConnectDisconnect是我要替换的按钮的名称。

        // Handler Disconnect & Connect button
    btnConnectDisconnect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (!mBtAdapter.isEnabled()) {
                Log.i(TAG, "onClick - BT not enabled yet");
                Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
            } else if (btnConnectDisconnect.getText().equals("Connect")) {
                //Connect button pressed, open DeviceListActivity class, with popup windows that scan for devices
                Intent newIntent = new Intent(UartActivity.this, DeviceListActivity.class);
                startActivityForResult(newIntent, REQUEST_SELECT_DEVICE);
            }
            else if (btnConnectDisconnect.getText().equals("Disconnect")) {
                //unpair
                System.out.println("Disconnecting from peripheral");
                pDeviceAddress = null;
                editor.remove("address");
                editor.commit();
                System.out.println("Currently saved address: " + prefs.getString("address", null));
                System.out.println("Currently saved address check: " + pDeviceAddress);
                //disconnect from service
                Thread thread = new Thread() {
                    @Override
                    public void run() {
                        try {
                            sleep(50);
                            mService.disconnect();
                            System.out.println("Disconnecting from service...");
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                };
                thread.start();

                if(mService == null){
                    System.out.println("Service disconnected!");
                } else System.out.println("Service connected!");

2 个答案:

答案 0 :(得分:0)

根据代码,我可以看到按钮的名称是btnConnectDisconnect。因此,您可以进入放置此按钮的XML文件,并首先将按钮标记(<Button .../>)替换为<ImageButton..../>。然后,您可以将android:src="@drawable/name_of_drawable"添加到ImageButton标记,以设置您希望ImageButton具有的图像。然后返回代码并将btnConnectDisconnect的类型从Button更改为ImageButton。这可以让您到达目的地,而无需触摸OnClickListener中的代码。

希望这有帮助!

答案 1 :(得分:0)

要获得理想的行为,您需要做一些事情。

  1. 在Java文件中将类型从Button更改为ImageButton(上面发布)

  2. 使用以下内容在res / drawable目录中创建一个新的XML文件(btn_bluetooth.xml),确保替换图像引用:

  3. <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:state_selected="true"
        android:drawable="@drawable/BLUETOOTH_CONNECTED_IMAGE_REFERENCE"
        />
    <item 
        android:state_selected="false"
        android:drawable="@drawable/BLUETOOTH_DISCONNECTED_IMAGE_REFERENCE""
        />
    </selector>
    
    1. 在XML布局文件中将类型从Button更改为ImageButton(通常在Java文件的onCreate或onCreateView方法中引用(上面发布)

    2. 建立或失去蓝牙连接时,只需使用true或false调用btnConnectDisconnect.setEnabled()