I have a simple LinearLayout with several buttons, whos state color/text change based on the state of an underlying service, thats working fine.
However the buttons, are only clickable on the right corner ???
The button allSystemServicesToggleButton which i have included the implementation for in this post and only be clicked on the right side/right corner???
Here is my fragment xml layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fragment_services" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="78dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="All System Services" android:textColor="#000000" android:textSize="20sp" /> <Button android:id="@+id/allSystemServicesToggleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="64dp" android:text="@string/stopped" android:layout_weight="1" android:backgroundTint="@color/stoppedServiceColor" android:enabled="true"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!--<TextView android:layout_width="163dp" android:layout_height="wrap_content" android:layout_weight="5" android:text="Paired Bluetooth Devices" android:textColor="#000000" android:textSize="20sp" /> <TextView android:id="@+id/textViewNumberOfConnectedDevices" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:layout_weight="1"/> <Button android:id="@+id/btDevicesToggleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="64dp" android:text="Pair" android:layout_weight="4" />--> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:text="Networks" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="32sp" android:textColor="#000000"/> <View android:id="@+id/viewServicesDivider1" android:layout_width="match_parent" android:layout_height="2dp" android:background="#808080" android:layout_gravity="center" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="82dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Bluetooth Service" android:textColor="#000000" android:textSize="20sp" /> <Button android:id="@+id/btServicesToggleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="48dp" android:text="@string/stopped" android:layout_weight="1" android:backgroundTint="@color/stoppedServiceColor"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="82dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="MQTT Service" android:textColor="#000000" android:textSize="20sp" /> <Button android:id="@+id/MQTTserviceToggleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:backgroundTint="@color/stoppedServiceColor" android:minWidth="48dp" android:text="@string/stopped" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:text="Location Services" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="32sp" android:textColor="#000000"/> <View android:id="@+id/viewServicesDivider3" android:layout_width="match_parent" android:layout_height="2dp" android:background="#808080" android:layout_gravity="center" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="79dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="GPS" android:textColor="#000000" android:textSize="20sp" /> <Button android:id="@+id/gpsServiceToggleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:minWidth="48dp" android:text="@string/stopped" android:layout_weight="1" android:backgroundTint="@color/stoppedServiceColor"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:text="Command Services" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="32sp" android:textColor="#000000"/> <View android:id="@+id/viewServicesDivider4" android:layout_width="match_parent" android:layout_height="2dp" android:background="#808080" android:layout_gravity="center" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="82dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Voice Recognition" android:textColor="#000000" android:textSize="20sp" /> <Button android:id="@+id/voiceRecognitionToggleButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/stopped" android:minWidth="48dp" android:layout_weight="1" android:backgroundTint="@color/stoppedServiceColor" /> </LinearLayout> </LinearLayout>
Relevant fragment java:
package x.core.fragments; import android.content.Intent; import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.speech.tts.TextToSpeech; import android.support.v4.app.Fragment; import android.support.v4.graphics.drawable.DrawableCompat; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.Toast; import x.core.Application.NgfrApp; import x.core.R; import x.core.helpers.Util; import x.core.services.BluetoothService; import x.core.services.LocationService; import x.core.services.MqttBrokerService; import x.core.services.ServicesStateBroadcastReceiver; import x.core.services.SpeechRecognitionService; import x.core.services.UIService; public class ServicesFragment extends Fragment implements View.OnClickListener { private static final String TAG = "ServicesFragment"; public static ServicesFragment newInstance() { return new ServicesFragment(); } private static Button btServicesToggleButton; private static Button mqttServicesToggleButton; private static Button gpsServiceToggleButton; private static Button voiceServiceToggleButton; private static Button allServiceToggleButton; private static String stopped = null; private static String running = null; private static int runningColorId, stoppedColorId = -1; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_services, container, false); btServicesToggleButton = rootView.findViewById(R.id.btServicesToggleButton); mqttServicesToggleButton = rootView.findViewById(R.id.MQTTserviceToggleButton); gpsServiceToggleButton = rootView.findViewById(R.id.gpsServiceToggleButton); voiceServiceToggleButton = rootView.findViewById(R.id.voiceRecognitionToggleButton); allServiceToggleButton = rootView.findViewById(R.id.allSystemServicesToggleButton); stopped = getResources().getString(R.string.stopped); running = getResources().getString(R.string.running); runningColorId = getResources().getColor(R.color.runningServiceColor); stoppedColorId = getResources().getColor(R.color.stoppedServiceColor); allServiceToggleButton.setEnabled(true); allServiceToggleButton.setClickable(true); allServiceToggleButton.setOnClickListener(this); return rootView; } public void onClick(View v) { switch (v.getId()) { case R.id.allSystemServicesToggleButton: if (ServicesStateBroadcastReceiver.BT_SERVICE_STATE_VALUE==false || ServicesStateBroadcastReceiver.MQTT_STATE_VALUE==false || ServicesStateBroadcastReceiver.NGFR_GPS_SERVICE_STATE_VALUE==false || ServicesStateBroadcastReceiver.VOICE_SERVICE_STATE_VALUE==false) { Toast.makeText(NgfrApp.getContext(),NgfrApp.getContext().getResources().getString(R.string.restarting_services),Toast.LENGTH_SHORT).show(); //restartingServices(); } else { Toast.makeText(NgfrApp.getContext(),NgfrApp.getContext().getResources().getString(R.string.all_already_running),Toast.LENGTH_SHORT).show(); } break; default: break; } } }
MainActivity.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="vertical" > <android.support.design.widget.TabLayout android:id="@+id/activity_main_tabLyout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" /> <android.support.v4.view.ViewPager android:id="@+id/activity_main_viewPager" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
MainActivity.java, I only included relevant code:
public class MainActivity extends AppCompatActivity { private static String TAG = "Main"; private static final int CHECK_BT_CODE = 1; private static final int CHECK_TTS_CODE = 2; //global boolean flags that will communicate the state of the system at all times //bluetooth related flags public boolean isBleSupported = false; public boolean isBluetoothEnabled = false; public boolean accessBluetoothManager= false; public boolean nearbyDevices = false; //configuration data related public boolean isConfigurationLoadedCorrectly = false; //text to speech related public boolean isTextToSpeechSupported = false; private Context context = null; private ServicesStateBroadcastReceiver servicesStateBroadcastReciever = null; private ViewPager mainViewPager; private TabLayout tabLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG, "Activity started!!"); context = this; setContentView(R.layout.activity_main); MainActivityViewPager adapter = new MainActivityViewPager(getSupportFragmentManager()); mainViewPager = (ViewPager) findViewById(R.id.activity_main_viewPager); mainViewPager.setAdapter(adapter); tabLayout = (TabLayout) findViewById(R.id.activity_main_tabLyout); tabLayout.setupWithViewPager(mainViewPager ); } }
The adapter for my fragments, FragmentStatePagerAdapter:
package x.core.views; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import x.BiometricsFragment; import x.ServicesFragment; public class MainActivityViewPager extends FragmentStatePagerAdapter { public MainActivityViewPager(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment returnFragment; switch(position) { case 0: returnFragment = ServicesFragment.newInstance(); break; case 1: returnFragment = BiometricsFragment.newInstance(); break; default: return null; } return returnFragment; } @Override public int getCount() { return 2; } public CharSequence getPageTitle(int position) { CharSequence title; switch (position) { case 0: title = "Services"; break; case 1: title = "Biometrics"; break; default: return null; } return title; } }
Thanks
1 Answers
Answers 1
only for corner clicking use this kind of logic
<FrameLayout android:layout_width="50dp" android:layout_height="50dp"> <TextView android:layout_width="50dp" android:layout_height="50dp" android:background="@color/colorAccent" /> <TextView android:id="@+id/tvtttt" android:layout_width="10dp" android:layout_height="10dp" android:layout_gravity="right" android:background="#F00" /> </FrameLayout>
0 comments:
Post a Comment