MvxListViews with checkboxes inside the ItemsSource are not selectable - mvvmcross

I have an MvxListView that I'm showing some recipe cards in. When the user clicks a card they should be taken to a detail screen. The problem I'm running into is that when there is a CheckBox (bound or unbound) in the cell, the entire cell ignores the click event.
My MvxListView is created with:
<MvxListView
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
local:MvxBind="ItemsSource Recipes; ItemClick ShowRecipeDetailCommand"
local:MvxItemTemplate="#layout/use_recipe_list_item"
android:divider="#android:color/transparent"
android:dividerHeight="10dp" />
The List item is created with:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#color/use_detail_recipe_background"
android:padding="10dp">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Title"
android:id="#+id/tvTitle"
android:textSize="24sp"
local:MvxBind="Text Title"
android:layout_weight="1"
android:layout_toLeftOf="#+id/cbFavorite"
android:textColor="#color/use_detail_recipe_title_text" />
<!-- <CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/cbFavorite"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:checked="false"
android:layout_weight="0" />-->
<View
android:id="#+id/vDivider1"
android:layout_width="fill_parent"
android:layout_height="2dp"
android:background="#000000"
android:layout_below="#+id/tvTitle" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Content"
android:id="#+id/tvContent"
android:singleLine="false"
android:layout_below="#+id/vDivider1"
local:MvxBind="Text Content"
android:textColor="#color/use_detail_recipe_content_text"
android:maxLines="4"/>
</RelativeLayout>
If the checkbox isn't commented out, this works. How can I work around this? Would it be possible to add a command to the click on my base RelativeLayout in the item?

Thanks for the tip Stuart. This is indeed not a MvvmCross issue but rather a general Android issue.
The solution was to add the following to each clickable item:
android:focusable="false"
android:focusableInTouchMode="false"
This comment got me on the right track https://stackoverflow.com/a/15859831/83301.

Related

Button doesn't show on top of Maps Activity

I'm trying to add a button on top of Map Activity, in the layout.
I just want to show a button over the map layout, but I tried different layouts, Constraint, Relative... and nothing works. I also tried to put the map fragment in XML before and after the button inside a relative layout, and yet it did nothing, it shows only the map.
I resized the map and even removed the map layout, and still the map shows in full screen.
<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:id="#+id/constrainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="#+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="270dp"
android:layout_height="336dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:context="com.parse.starter.RidersActivity" />
<Button
android:id="#+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="16dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>
You don't need to say the orientation for constraintLayout. Just make your fragment sizes android:layout_width="match_parent" and
android:layout_height="match_parent" , add button and constraint it to your fragment:
You don't need to say the orientation for constraintLayout. Just make your fragment sizes android:layout_width="match_parent" and
android:layout_height="match_parent" , add button and constraint it to your fragment:
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="#+id/constrainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
It looks like this :
Just Make your Fragment height and weight attribute match_parent
Try below code:
<?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:id="#+id/constrainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="#+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="#+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="160dp"
android:layout_marginBottom="652dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>
I hope its work for you
i finally found the problem, i accidentally created 2 similar activities and i was editing the wrong activity, that's why there were no errors. Thanks everybody who tried to help.

How to add FloatingActionButton on maps in xamarin.android

I am trying to add custom button for locate me for the maps. I came to know we need to use FloatingActionButton, so I have created as following in my layout.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:id="#+id/header">
<include
android:id="#+id/mapToolbar"
layout="#layout/toolbar" />
</RelativeLayout>
<Spinner
android:id="#+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="#array/maptype_arrays" />
<fragment
android.id="#+id/map"
android:tag="maptag"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment" />
<android.support.design.widget.FloatingActionButton
android:id="#+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|left"
android:src="#drawable/locateme_icon"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" />
</LinearLayout>
But Im not getting button on the screen when run this. Is there anything to add along with this.
Thanks in advance.
I got the FloatingActionButton displayed by changing Linear layout to Frame layout.

Collapse Toolbar affects other layout

I have this layout:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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="match_parent">
<android.support.design.widget.AppBarLayout
android:id="#+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="#style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="#+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:expandedTitleGravity="center_vertical">
<android.support.v7.widget.Toolbar
android:id="#+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="center"
android:theme="#style/Base.ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin"
app:titleMarginStart="35dp"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_collapseMode="parallax">
<Button
android:id="#+id/go_to_deezer_btn"
android:layout_width="135dp"
android:layout_height="36dp"
android:layout_gravity="bottom|center"
android:layout_marginBottom="52dp"
android:background="#drawable/rounded_corners_button"
android:text="#string/go_to_deezer"
android:textSize="12sp"
app:layout_anchor="#id/header"
app:layout_anchorGravity="bottom|center_horizontal" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.cmd.cienradios.ui.header.EntityHeaderAlbum
android:id="#+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<include
android:id="#+id/deezer_banner"
layout="#layout/deezer_banner"
android:layout_width="match_parent"
android:layout_height="70dp" />
</LinearLayout>
</FrameLayout>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.SwipeRefreshLayout
android:id="#+id/swipe_refresh_layout_generic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:theme="#style/Theme.AppCompat.NoActionBar"
app:layout_behavior="#string/appbar_scrolling_view_behavior">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="#style/Theme.AppCompat.NoActionBar"
>
<com.cmd.cienradios.ui.TrackRecyclerView
android:id="#+id/tracks_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" />
</android.support.v4.widget.NestedScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.design.widget.CoordinatorLayout>
when I run the program, it collapses just fine, expected behaviour.
but there seems to be another layout added between the collapsed toolbar and my Swiperefresh layout, it's as tall as the toolbar, but empty and unreactive
Somehow the toolbar is related to this issue as the hight of this phantom layout changes when I change the height of the toolbar
the space im refering to is the one on top of the recyclerView on the bottom.
Amazingly, this was fixed by moving the toolbar below the FrameLayout, when I moved it back up to reproduce the bug, it didn't do it. So I guess the lesson is "Sometimes you just have to move your code around" I guess maybe restarting the computer or shutting down Android Studio could have done the trick as well.

How to automatically play video in listview on android app

I want to play video in listview from online server as like VINE app. And plays only one video at a time.But videoview cann't show in listview. I can view all others like text, links. But VideoView cann't show in listview row. show all without videoview. when try without listview it works fine and play video from online
my listview adapter code snippet like this:
mViewHolder.mVideoView.setVisibility(View.VISIBLE);
MediaController mComtroller = new MediaController(mContext);
mViewHolder.mVideoView.setMediaController(mComtroller);
mViewHolder.mVideoView.setVideoURI(Uri.parse("myLink"));
mViewHolder.mVideoView.start();
mViewHolder.mVideoView.requestFocus();
layout row of listview:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="100" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_margin="5dp"
android:layout_weight="80"
android:weightSum="10"
android:orientation="horizontal"
android:background="#drawable/background" >
<VideoView
android:id="#+id/vv_surface_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:visibility="visible"
android:layout_weight="5" />
<ImageView
android:id="#+id/iv_videoThumbnail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5"
android:background="#drawable/background" />
</LinearLayout>
<TextView
android:id="#+id/tv_VideoName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="10"
android:text="TextView" />
<TextView
android:id="#+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="10" />
</LinearLayout>

android: video as background view

I want to play video in background of the view.In view i want to some other view like button and textview, can it is possible to do that?
i have try using the following code
<
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<VideoView
android:scrollbars="none"
android:clickable="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:fitsSystemWindows="true"
android:id="#+id/VideoView">
</VideoView>
<TextView
android:text="hi123"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
Please suggest me how can it possible to do it.
Thank you.
Not sure if you can put a videoView in background.
The better option would be to use a frame layout with a transparent background and put your other views on the top of it.
Shafi is right i m just posting code how i have done,
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<VideoView
android:scrollbars="none"
android:clickable="false"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:fitsSystemWindows="true"
android:id="#+id/videoView"
/>.....
I hope this code will help some one.
Thank you