I am new to kotlin and I am having some difficulty with checkboxes and radio buttons. I am trying to use radio buttons with checkboxes to store info. When the user clicks on the day(s) radio button, they should be able to use the checkboxes to select the days that are at the checkboxes. When I ran the debugger, I learned that the function skips over the checkboxes. I am guessing the problem is with the setOnCheckedLister. What might be the best way to use the checkboxes with the radio button? This is what my function looks like.
private fun saveSchedule() {
var schedule = Schedule().apply {
radio_group.setOnCheckedChangeListener { group, checkedId ->
if (checkedId == R.id.radio_days) {
when {
monday.isChecked -> {
day = monday.text.toString()
}
tuesday.isChecked -> {
day = tuesday.text.toString()
}
wednesday.isChecked -> {
day = wednesday.text.toString()
}
thursday.isChecked -> {
day = thursday.text.toString()
}
friday.isChecked -> {
day = friday.text.toString()
}
saturday.isChecked -> {
day = saturday.text.toString()
}
sunday.isChecked -> {
day = sunday.text.toString()
}
}
}
This is what my XML looks like.
<RadioGroup
android:id="#+id/radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="#+id/radio_days"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/radiobtndays"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<!-- checkboxes for days -->
<CheckBox android:id="#+id/monday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/checkboxmonday"
android:enabled="true"
/>
<CheckBox android:id="#+id/tuesday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/checkboxtuesday"
android:enabled="true"
/>
<CheckBox android:id="#+id/wednesday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/checkboxwednesday"
android:enabled="true"
/>
<CheckBox android:id="#+id/thursday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/checkboxthursday"
android:enabled="true"
/>
<CheckBox android:id="#+id/friday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/checkboxfriday"
android:enabled="true"
/>
<CheckBox android:id="#+id/saturday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/checkboxsaturday"
android:enabled="true"
/>
<CheckBox android:id="#+id/sunday"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/checkboxsunday"
android:enabled="true"
/>
</LinearLayout>
Is it possible to pause the auto changing image with a finger touch in view flipper. Here I have given a product 360 view with some images , now I want to give the users a facility to pause and see the image .
Below given is the current XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/activity_kten_seeround"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".KtenSeeround">
<ViewFlipper
android:id="#+id/flipper1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:autoStart="true"
android:flipInterval="500"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/image1"
android:src="#drawable/kten75"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/image2"
android:src="#drawable/kten70"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/image3"
android:src="#drawable/kten65"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/image4"
android:src="#drawable/kten60"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/image5"
android:src="#drawable/kten55"/>
</ViewFlipper>
</RelativeLayout>
How can I show elevations in a view with shadows using ConstraintLayout?
With Relative and Linear could perform elevations with shadows to implement list but I can not do it with ConstraintLayout.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:orientation="vertical">
<TextView
android:id="#+id/list_ssid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:elevation="8dp"
android:background="#fff"
android:text="SSID"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="#+id/guideline"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="#+id/list_ch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:elevation="8dp"
android:background="#fff"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="CH"
app:layout_constraintLeft_toLeftOf="#+id/guideline"
app:layout_constraintRight_toLeftOf="#+id/guideline2"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="#+id/list_dB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:elevation="8dp"
android:background="#fff"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="dB"
app:layout_constraintLeft_toLeftOf="#+id/guideline2"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<android.support.constraint.Guideline
android:id="#+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.65"
tools:layout_editor_absoluteX="239dp"
tools:layout_editor_absoluteY="0dp" />
<android.support.constraint.Guideline
android:id="#+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.83"
tools:layout_editor_absoluteX="306dp"
tools:layout_editor_absoluteY="0dp" />
</android.support.constraint.ConstraintLayout>
For some reason, elevation works in ConstraintLayout if you give a dummy drawable as the background::
Create a drawable:
dummyBg.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#android:color/white"/>
<corners android:radius="2dp" />
</shape>
</item>
</layer-list>
Use this as the background for the view and use elevation as you normally would.
android:elevation="8dp"
android:background="#drawable/dummyBg"
android:padding="4dp"
So you'd get:
<TextView
android:id="#+id/list_ssid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="6dp"
android:layout_marginBottom="2dp"
android:elevation="8dp"
android:background="#drawable/dummyBg"
android:padding="4dp"
android:text="SSID"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="#+id/guideline"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
In order to make elevation work, you need to just set a background color to a view.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#color/your_color"
android:text="SSID"/>
Doesn't matter what kind of View it is,
a child of ConstraintLayout or ConstraintLayout itself
You also may use hex color or color attribute.
Just note that it mustn't be fully transparent.
I'm confused about how transitionSet is used. This is my definition:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" android:transitionOrdering="sequential">
<slide android:slideEdge="bottom" android:startDelay="0">
<targets>
<target android:targetId="#id/action_save" />
</targets>
</slide>
<slide android:slideEdge="top">
<targets>
<target android:targetId="#id/image_album_background" />
</targets>
</slide>
<slide
android:duration="500"
android:slideEdge="bottom">
<targets>
<target android:targetId="#id/fields_container" />
</targets>
</slide>
</transitionSet>
This way, all views will slide from bottom edge. But if I change the order into this:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" android:transitionOrdering="sequential">
<slide android:slideEdge="top">
<targets>
<target android:targetId="#id/image_album_background" />
</targets>
</slide>
<slide android:slideEdge="bottom" android:startDelay="0">
<targets>
<target android:targetId="#id/action_save" />
</targets>
</slide>
<slide
android:duration="500"
android:slideEdge="bottom">
<targets>
<target android:targetId="#id/fields_container" />
</targets>
</slide>
</transitionSet>
Then, all will slide from top edge.
It seems that Android only cares about the first transition.
Update:
This is the layout:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Picture -->
<RelativeLayout
android:id="#+id/image_album_background"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ff000000">
<ImageView
android:id="#+id/image_album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true"
android:contentDescription="No art"
android:maxHeight="320dp"
android:maxWidth="320dp"
android:src="#drawable/ic_noart"
android:transitionName="transition_album_cover"
tools:ignore="HardcodedText" />
<Button
android:id="#+id/btn_img_marker"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignEnd="#+id/image_album"
android:layout_alignParentBottom="true"
android:layout_alignRight="#+id/image_album"
android:background="#ff56bb21" />
</RelativeLayout>
<LinearLayout
android:id="#+id/fields_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#+id/image_album_background"
android:background="#ffffffff"
android:orientation="vertical"
android:padding="#dimen/frame_margin">
<CheckBox
android:id="#+id/cb_embed_art"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="#string/label_embed_art" />
<TextView
android:id="#+id/text_filepath"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="/mnt/data/path/to/file/audio.mp3" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/fields_container"
android:background="#ffffffff"
android:padding="24dp">
<!-- Title -->
<LinearLayout
android:id="#+id/title_row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_title" />
<EditText
android:id="#+id/edit_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="text" />
</LinearLayout>
<!-- Artist -->
<LinearLayout
android:id="#+id/artist_row"
style="#style/input_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/title_row"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_artist" />
<AutoCompleteTextView
android:id="#+id/edit_artist"
style="?android:editTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</LinearLayout>
<!-- Album artist -->
<LinearLayout
android:id="#+id/album_artist_row"
style="#style/input_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/artist_row"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_album_artist" />
<AutoCompleteTextView
android:id="#+id/edit_album_artist"
style="?android:editTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</LinearLayout>
<!-- Album -->
<LinearLayout
android:id="#+id/album_row"
style="#style/input_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/album_artist_row"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_album" />
<AutoCompleteTextView
android:id="#+id/edit_album"
style="?android:editTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</LinearLayout>
<LinearLayout
android:id="#+id/two_column_row1"
style="#style/input_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/album_row"
android:baselineAligned="false"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_genre" />
<AutoCompleteTextView
android:id="#+id/edit_genre"
style="?android:editTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</LinearLayout>
<LinearLayout
style="#style/input_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_year" />
<EditText
android:id="#+id/edit_year"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="24dp"
android:layout_weight="3"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_track_no" />
<EditText
android:id="#+id/edit_track_no"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
</LinearLayout>
<LinearLayout
style="#style/input_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_track_total" />
<EditText
android:id="#+id/edit_track_total"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
style="#style/input_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/two_column_row1"
android:orientation="horizontal">
<TextView
style="#style/label"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="#string/label_comment" />
<EditText
android:id="#+id/edit_comment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:inputType="textMultiLine"
android:minLines="5" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</ScrollView>
<com.melnykov.fab.FloatingActionButton
android:id="#+id/action_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:src="#drawable/ic_action_save"
fab:fab_colorNormal="#color/accent_shade"
fab:fab_colorRipple="#66FF9800" />
</FrameLayout>
This is how to open the layout:
String transitionName = "transition_album_cover";
if (AnimationViews.albumCover != null) {
fragmentTx.addSharedElement(AnimationViews.albumCover, transitionName);
}
TransitionInflater inflater = TransitionInflater.from(this);
editorFragment.setEnterTransition(inflater.inflateTransition(R.transition.editor_fragment_enter));
It is tricky to be able to make work all transitions which are child views. Because it depends on ViewGroup (parent view) of that child views.
Quoting from jimulabs:
If the background of a ViewGroup is set (even if it’s android:color/transparent), the transition system will treat the
ViewGroup as a single view and ignore its children. Thus, any
transitions will only run on the ViewGroup, instead of its children
individually; if a transition has its target set to one of the
children only, the transition will not run at all.
Conversely, if a ViewGroup does not have a background (or it’s #null), transitions will run for all its individual children; if a
transition has its target set to the ViewGroup, the transition will
not run at all.
This does NOT happen if you run beginDelayedTransition() in normal cases such as setting the visibility of views in a OnClickListener.
You can also read about this from here on section Transitioning Views & Transition Groups.
However, you should be able to make it work through method ViewGroup#setTransitionGroup(boolean) which i could not make it work. I have tried using this method on parent layout of screen. So i had to stick with javacode for all transitionSet targets which is time consuming.
I just tried this and it works fine for me, so I have to think that it has to do with your specific targets. My guess is that image_album_background contains both action_save and fields_container. If so, those two Views are still going to slide within their container.
The easy way around this is to move the image_album_background into a sibling of other two instead of parent. If you don't already have a container that is capable of that (e.g. LinearLayout), one extra level will do it:
<FrameLayout ...>
<ImageView android:id="#+id/image_album_background"/>
<other views.../>
</FrameLayout>
5.1.1 fixed confirmed
#George Mount mentioned that support.v4.fragments would fix that one, but in return, you will need to implement your Activity as FragmentActivity.
This is an old question, though, today I was having the same problem and I solved it by adding the tag android:transitionGroup="false|true" to the the ViewGroups, include the root, which of course, should be settled to false. I'm now able to run different animations, in different views (include|exclude views) and the behaviour is as expected.
I want to display 5 columns through Mvxgridview, I have following code to setup gridview and its template but not able to get the desired result. I am getting only one column i.e. the first column which is displayed in a single row
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF">
<Mvx.MvxGridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="#+id/gridView1"
local:MvxBind="ItemsSource Outages"
local:MvxItemTemplate="#layout/item_outage"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
android:numColumns="auto_fit"
android:columnWidth="50dp"
android:gravity="center" />
Item template
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="#+id/relativeLayout1">
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="#+id/textView1"
local:MvxBind="Text Wtg" />
<TextView
android:text="Text 2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="#+id/textView2"
local:MvxBind="Text StartTime"
android:layout_toRightOf="#id/textView1" />
<TextView
android:text="Text 3"
android:id="#+id/textView3"
local:MvxBind="Text EndTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="#id/textView2" />
<TextView
android:text="Text 4"
android:id="#+id/textView4"
local:MvxBind="Text Category"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="#id/textView3" />
<TextView
android:text="Text 5"
android:id="#+id/textView5"
local:MvxBind="Text SubCategory"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="#id/textView4" />
</RelativeLayout>