diff options
author | TAMARA JERINIC <tamara.jerinic@gmail.com> | 2022-12-13 03:42:01 +0100 |
---|---|---|
committer | TAMARA JERINIC <tamara.jerinic@gmail.com> | 2022-12-13 03:42:01 +0100 |
commit | 61f1cd36b0d2263cd1c19f9d44004131639ae776 (patch) | |
tree | 28add109b59248a9174e28bcb3c27cc2a18e8220 /Client | |
parent | 7e322b41ab26c0b1b0a4c7bacca24d1e63530cd7 (diff) | |
parent | 5ffa30b80f06a87eef13dd830959a4289c787a35 (diff) |
Merge branch 'develop' of http://gitlab.pmf.kg.ac.rs/BrzoDoLokacije2022/odyssey/brzodolokacije into develop
Diffstat (limited to 'Client')
22 files changed, 469 insertions, 139 deletions
diff --git a/Client/BrzoDoLokacije/app/build.gradle b/Client/BrzoDoLokacije/app/build.gradle index 0bc0fe8..2db362d 100644 --- a/Client/BrzoDoLokacije/app/build.gradle +++ b/Client/BrzoDoLokacije/app/build.gradle @@ -24,6 +24,7 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.debug } } compileOptions { diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt index b0b7f5e..6dfbeb0 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt @@ -46,13 +46,19 @@ class ActivityForgottenPassword : AppCompatActivity() { val intent = Intent(cont, ActivityForgottenPasswordVerify::class.java) intent.putExtra("email", emailString) startActivity(intent) + }else{ + Toast.makeText(this@ActivityForgottenPassword,"Email ne postoji",Toast.LENGTH_LONG).show() } } override fun onFailure(call: Call<ResponseBody?>, t: Throwable) { + Toast.makeText(this@ActivityForgottenPassword,"Email ne postoji",Toast.LENGTH_LONG).show() } }) } + else{ + Toast.makeText(this@ActivityForgottenPassword,"Unesite validan email",Toast.LENGTH_LONG).show() + } } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt index a1db97f..a519a32 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt @@ -1,6 +1,7 @@ package com.example.brzodolokacije.Activities import android.content.Intent +import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View @@ -36,6 +37,19 @@ class ActivityForgottenPasswordVerify : AppCompatActivity() { var pwstr=pw.text.toString().trim() var pwchkstr=pwchk.text.toString().trim() var kodstr=kod.text.toString().trim() + if(kodstr.isEmpty()) + { + kod.hint = "Unesite kod" + kod.setHintTextColor(Color.RED) + } + if(pwstr.isEmpty()){ + pw.hint = "Unesite novu lozinku" + pw.setHintTextColor(Color.RED) + } + if(pwchkstr.isEmpty()){ + pwchk.hint = "Potvrdite novu lozinku" + pwchk.setHintTextColor(Color.RED) + } if(!kodstr.isEmpty() && checkPassword(pwstr,pwchkstr)){ var resetData= ResetPass(email!!,kodstr,pwstr) @@ -47,6 +61,8 @@ class ActivityForgottenPasswordVerify : AppCompatActivity() { if(response.code()==200){ intent = Intent(cont, ActivityLoginRegister::class.java) startActivity(intent) + }else{ + Toast.makeText(this@ActivityForgottenPasswordVerify,"Nevalidan kod",Toast.LENGTH_LONG).show() } } override fun onFailure(call: Call<ResponseBody?>, t: Throwable) { diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt index d1f1e4c..f1c704e 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt @@ -1,5 +1,6 @@ package com.example.brzodolokacije.Activities +import LinePagerIndicatorDecoration import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.os.Build @@ -7,6 +8,7 @@ import android.os.Bundle import android.provider.MediaStore import android.widget.Toast import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.PagerSnapHelper import androidx.recyclerview.widget.RecyclerView @@ -17,6 +19,7 @@ import com.bumptech.glide.request.transition.Transition import com.example.brzodolokacije.Adapters.OpenedPostImageAdapter import com.example.brzodolokacije.Models.PostImage import com.example.brzodolokacije.Models.PostPreview +import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.databinding.ActivityOpenedImagesBinding import java.util.* @@ -78,6 +81,11 @@ class ActivityOpenedImages : AppCompatActivity() { snap.attachToRecyclerView(rvImages) rvImages!!.layoutManager=linearLayout rvImages!!.adapter=adapter + //tackice + var color = ContextCompat.getColor(this@ActivityOpenedImages, R.color.unfollow) + var color1 = ContextCompat.getColor(this@ActivityOpenedImages, R.color.button_main) + if(images!!.size>1) + rvImages!!.addItemDecoration(LinePagerIndicatorDecoration(10,10,100,color,color1)) } }
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt index 040edf3..d2a820f 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt @@ -1,16 +1,21 @@ package com.example.brzodolokacije.Activities +import LinePagerIndicatorDecoration import android.content.Intent import android.graphics.Color -import android.graphics.drawable.GradientDrawable import android.os.Bundle import android.preference.PreferenceManager +import android.util.Log import android.util.TypedValue +import android.view.GestureDetector +import android.view.MotionEvent import android.view.ViewGroup +import android.view.ViewGroup.MarginLayoutParams import android.widget.* import androidx.appcompat.app.AppCompatActivity import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat +import androidx.core.view.GestureDetectorCompat import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.core.view.setMargins @@ -35,6 +40,7 @@ import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper import com.example.brzodolokacije.databinding.ActivitySinglePostBinding import com.google.gson.Gson +import kotlinx.android.synthetic.main.activity_single_post.* import org.osmdroid.config.Configuration import org.osmdroid.tileprovider.tilesource.TileSourceFactory import org.osmdroid.util.GeoPoint @@ -70,7 +76,7 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener { private lateinit var btnChangeHeightUp:ImageView private lateinit var btnChangeHeightDown:ImageView private lateinit var fragmentContainer: FrameLayout - + //private lateinit var detector: GestureDetectorCompat override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding=ActivitySinglePostBinding.inflate(layoutInflater) @@ -89,16 +95,22 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener { btnChangeHeightUp.isClickable=true linearLayout2=findViewById(R.id.linearLayout2) + linearLayout2.setOnClickListener { linearLayout2.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT; } - + //detector= GestureDetectorCompat(this,SwipeGestureListener()) //instantiate adapter and linearLayout adapterImages= PostImageAdapter(this@ActivitySinglePost, post.images as MutableList<PostImage>) layoutManagerImages= LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false) recyclerViewImages = binding.rvMain + //tackice image + var color = ContextCompat.getColor(this@ActivitySinglePost, R.color.unfollow) + var color1 = ContextCompat.getColor(this@ActivitySinglePost, R.color.button_main) + if(post.images.size>1) + recyclerViewImages!!.addItemDecoration(LinePagerIndicatorDecoration(10,10,100,color,color1)) //DODATI SLIKE recyclerViewImages?.setHasFixedSize(true) @@ -190,8 +202,53 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener { R.color.dark_blue_transparent, R.color.purple_700 ) + + btnChangeHeightUp.performClick() + btnChangeHeightDown.performClick() + } + + /*override fun onTouchEvent(event: MotionEvent?): Boolean { + return if(event?.let { detector.onTouchEvent(it) } == true){ + Log.d("testing swipeup","------------------------") + true + } + else return super.onTouchEvent(event) } + inner class SwipeGestureListener : GestureDetector.SimpleOnGestureListener() { + private val SWIPE_THRESHOLD = 20 + private val SWIPE_VELOCITY_THRESHOLD = 20 + override fun onFling( + downEvent: MotionEvent, + moveEvent: MotionEvent, + velocityX: Float, + velocityY: Float + ): Boolean { + + Log.d("testing swipeup","------------------------") + var diffX = moveEvent?.x?.minus(downEvent!!.x) ?: 0.0F + var diffY = moveEvent?.y?.minus(downEvent!!.y) ?: 0.0F + + if (Math.abs(diffX) < Math.abs(diffY)) { + if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { + if (diffY > 0 ) { + //top to bot + + } + else { + //bot to top + btnChangeHeightUp.performClick() + } + + } + return true + }else{ + return super.onFling(downEvent, moveEvent, velocityX, velocityY) + } + return super.onFling(downEvent, moveEvent, velocityX, velocityY) + } + }*/ + fun setUpFirstFragment(){ var fm: FragmentTransaction =supportFragmentManager.beginTransaction() val fragment = FragmentSinglePostDescription() @@ -212,6 +269,8 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener { loadTags() loadFavourite() setUpFirstFragment() + btnChangeHeightUp.performClick() + btnChangeHeightDown.performClick() swipeRefreshLayout.isRefreshing=false } @@ -317,7 +376,7 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener { tvNumberOfRatings.invalidate() //tvRating.text=String.format("%.2f",data.ratings) //tvNumberOfRatings.text=String.format("%d",data.ratingscount) - tvDatePosted.text=SimpleDateFormat("dd/MM/yyyy").format(post.lastViewed) + tvDatePosted.text=SimpleDateFormat("dd/MM/yyyy").format(post.createdAt) tvDatePosted.invalidate() } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt index 49c61c7..18ff392 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivity.kt @@ -1,7 +1,6 @@ package com.example.brzodolokacije.Activities import android.Manifest -import android.content.Intent import android.content.pm.PackageManager import android.os.Build import android.os.Bundle @@ -132,11 +131,6 @@ class ChatActivity : AppCompatActivity(), SwipeRefreshLayout.OnRefreshListener { fun setListeners(){ - findViewById<ImageButton>(R.id.addNewMessage).setOnClickListener { - val intent: Intent = Intent(this@ChatActivity,ChatActivityConversation::class.java) - intent.putExtra("receiverId","") - startActivity(intent) - } findViewById<ImageButton>(R.id.btnBack).setOnClickListener { finish() } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt index 3a52cc4..723980b 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ChatActivityConversation.kt @@ -4,7 +4,6 @@ import android.content.Intent import android.graphics.Bitmap import android.os.Bundle import android.util.Log -import android.view.View import android.widget.EditText import android.widget.ImageButton import android.widget.Toast @@ -72,63 +71,6 @@ class ChatActivityConversation : AppCompatActivity() { var messageContent=findViewById<EditText>(R.id.etNewMessage).text.trim().toString() val Api= RetrofitHelper.getInstance() if(!messageContent.isNullOrEmpty()){ - if(userId.isNullOrEmpty() || userId.equals("null")){ - //zahtev sa username=om - receiverUsername=findViewById<EditText>(R.id.etReceiverUsername).text.toString() - val request=Api.getProfile("Bearer "+token, - receiverUsername!! - ) - request.enqueue(object : retrofit2.Callback<UserReceive?> { - override fun onResponse(call: Call<UserReceive?>, response: Response<UserReceive?>) { - if(response.isSuccessful()){ - //zahtev da se posalje poruka - var user:UserReceive=response.body()!! - if(user._id==JWT(SharedPreferencesHelper.getValue("jwt",this@ChatActivityConversation)!!).claims["id"]?.asString()!!){ - Toast.makeText(this@ChatActivityConversation,"Ne mozete slati poruku sami sebi.",Toast.LENGTH_LONG).show() - } - else{ - userId=user._id - setHeader() - var message= MessageSend(userId!!,messageContent) - val request2=Api.sendMessage("Bearer "+token, - message - ) - request2.enqueue(object : retrofit2.Callback<Message?> { - override fun onResponse(call: Call<Message?>, response: Response<Message?>) { - if(response.isSuccessful()){ - //zahtev da se posalje poruka - var responseMessage=response.body() - var cal: Calendar = Calendar.getInstance() - cal.time=responseMessage?.timestamp - responseMessage?.usableTimeStamp=cal - dbConnection?.addMessage(responseMessage!!,username=user.username) - requestMessages() - binding.etNewMessage.text?.clear() - - } - else{ - Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime1.",Toast.LENGTH_LONG).show() - } - } - - override fun onFailure(call: Call<Message?>, t: Throwable) { - Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime2.",Toast.LENGTH_LONG).show() - } - }) - } - } - else{ - Log.d("main",response.message()) - //Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime3.",Toast.LENGTH_LONG).show() - } - } - - override fun onFailure(call: Call<UserReceive?>, t: Throwable) { - Toast.makeText(this@ChatActivityConversation,"fail.",Toast.LENGTH_LONG).show() - } - }) - } - else{ //zahtev da se posalje poruka var message= MessageSend(userId!!,messageContent) val request2=Api.sendMessage("Bearer "+token, @@ -155,8 +97,6 @@ class ChatActivityConversation : AppCompatActivity() { Toast.makeText(this@ChatActivityConversation,"Pogresno korisnicko ime.",Toast.LENGTH_LONG).show() } }) - } - } } binding.llHeader.setOnClickListener { @@ -172,20 +112,12 @@ class ChatActivityConversation : AppCompatActivity() { private fun setHeader(){ if(userId.isNullOrEmpty() || userId.equals("null")){ - binding.cvParentUsername.visibility= View.VISIBLE - binding.cvParentUsername.forceLayout() - binding.llHeader.visibility= View.GONE - binding.llHeader.invalidate() - binding.llHeader.forceLayout() + binding.tvFragmentTitle.text="Nije nađen korisnik" + binding.tvFragmentTitle.invalidate() } else{ - binding.llHeader.visibility= View.VISIBLE - binding.llHeader.invalidate() - binding.llHeader.forceLayout() binding.tvFragmentTitle.text=receiverUsername binding.tvFragmentTitle.invalidate() - binding.cvParentUsername.visibility= View.GONE - binding.cvParentUsername.forceLayout() } binding.btnBack.setOnClickListener { finish() diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt index a8fe567..82fd7a4 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt @@ -137,6 +137,10 @@ class MapsActivity : AppCompatActivity() { } fun uploadLocation(locationName:String){ + if(locationName.isNullOrEmpty() ||locationName.toString().trim()=="") { + Toast.makeText(this@MapsActivity,"Morate uneti naziv lokacije",Toast.LENGTH_SHORT).show() + return + } val api =RetrofitHelper.getInstance() var geocoder=GeocoderHelper.getInstance() var loc1=geocoder!!.getFromLocation(locLatitude!!,locLongitude!!,1) diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt index ea5a851..143b4a2 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/CommentsAdapter.kt @@ -11,6 +11,7 @@ import android.view.ViewGroup import android.view.inputmethod.InputMethodManager import android.widget.EditText import android.widget.Toast +import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide @@ -21,6 +22,7 @@ import com.example.brzodolokacije.Interfaces.IBackendApi import com.example.brzodolokacije.Models.CommentReceive import com.example.brzodolokacije.Models.CommentSend import com.example.brzodolokacije.Models.UserReceive +import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper import com.example.brzodolokacije.databinding.SingleCommentBinding @@ -58,6 +60,8 @@ class CommentsAdapter (val items : MutableList<CommentSend>,val activity: Activi inner class ViewHolder(itemView : SingleCommentBinding) : RecyclerView.ViewHolder(itemView.root){ fun bind(item : CommentSend){ binding.apply { + var color = ContextCompat.getColor(activity, R.color.purple_500) + etReplyCount.setTextColor(color) tvCommentAuthor.text=item.username tvCommentText.text=item.comment Log.d("info",tvCommentText.text.toString()+binding.toString()) @@ -128,6 +132,7 @@ class CommentsAdapter (val items : MutableList<CommentSend>,val activity: Activi } } fun setReplyCount(position: Int){ + if(items[position].replies!!.count()==1) itemView.etReplyCount.text=items[position].replies!!.count().toString() + " odgovor" else diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt index fd5aa33..d0a9818 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt @@ -45,7 +45,7 @@ class FragmentHome : Fragment(R.layout.fragment_home) { val rootView = inflater?.inflate(R.layout.fragment_home, container, false) recyclerView = rootView?.findViewById(R.id.rvMain) // set recyclerView attributes - recyclerView?.setHasFixedSize(true) +// recyclerView?.setHasFixedSize(true) recyclerView?.layoutManager = layoutManagerVar recyclerView?.adapter = adapterVar return rootView diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt index cf8eb22..3b976ad 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentShowPosts.kt @@ -198,7 +198,7 @@ class FragmentShowPosts : Fragment(), SwipeRefreshLayout.OnRefreshListener { val rootView = inflater?.inflate(R.layout.fragment_show_posts, container, false) recyclerView = rootView?.findViewById(R.id.rvMain) // set recyclerView attributes - recyclerView?.setHasFixedSize(true) +// recyclerView?.setHasFixedSize(true) //recyclerView?.layoutManager = linearManagerVar recyclerView?.layoutManager = linearManagerVar recyclerView?.adapter = adapterVar diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt index ca4505f..bdca6cd 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostComments.kt @@ -128,6 +128,7 @@ class FragmentSinglePostComments : Fragment() { }) } else{ + newComment.replies= mutableListOf() (adapterComments as CommentsAdapter).items.add(0,newComment) recyclerViewComments?.adapter=adapterComments addedComment() diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt index 376517c..f2c817a 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowers.kt @@ -1,30 +1,37 @@ package com.example.brzodolokacije.Fragments import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher import android.util.Log -import androidx.fragment.app.Fragment +import android.view.KeyEvent import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AutoCompleteTextView +import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Adapters.FollowersAdapter -import com.example.brzodolokacije.Adapters.ShowPostsHomePageAdapter -import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.Models.UserReceive import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper +import com.google.android.material.button.MaterialButton import retrofit2.Call import retrofit2.Callback import retrofit2.Response + class FragmentUserFollowers : Fragment() { private lateinit var followers:MutableList<UserReceive> + private lateinit var searchedFollowers:MutableList<UserReceive> private lateinit var rvFollowers:RecyclerView private lateinit var userId:String private lateinit var showMy:String + private lateinit var searchBar:AutoCompleteTextView + private lateinit var searchButton:MaterialButton override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -37,6 +44,8 @@ class FragmentUserFollowers : Fragment() { userId = bundle!!.getString("userId").toString() showMy = bundle!!.getString("showMy").toString().trim() rvFollowers=view.findViewById(R.id.rvFragmentUserFollowers) + searchBar=view.findViewById(R.id.FragmentFollowersSearchBar) + searchButton=view.findViewById(R.id.FragmentFollowersSearchBButton) if(showMy=="yes"){ getFollowersWithoutId() @@ -44,9 +53,63 @@ class FragmentUserFollowers : Fragment() { else if(showMy=="no") { getFollowers() } + searchButton.setOnClickListener { + searchText() + } + searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button + if (event.action === KeyEvent.ACTION_DOWN && + keyCode == KeyEvent.KEYCODE_ENTER + ) { + // Perform action on key press + searchText() + return@OnKeyListener true + } + false + }) + + searchBar.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + } + + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + searchText() + if(count==0) + if(showMy=="yes"){ + getFollowersWithoutId() + } + else if(showMy=="no") { + getFollowers() + } + } + + override fun afterTextChanged(s: Editable) { + } + }) return view } + fun searchText(){ + if(searchBar.text==null || searchBar.text.isNullOrEmpty() || searchBar.text.toString().trim()=="") + return + if(!this::followers.isInitialized) + return + var text=searchBar.text.toString().trim() + searchedFollowers= mutableListOf() + for(user in followers){ + if(user.username.contains(text)) + searchedFollowers.add(user) + } + rvFollowers.apply { + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) + adapter= FollowersAdapter(searchedFollowers,requireActivity()) + + } + + + + + } + fun getFollowers(){ val api = RetrofitHelper.getInstance() @@ -64,7 +127,7 @@ class FragmentUserFollowers : Fragment() { } followers = response.body()!!.toMutableList<UserReceive>() rvFollowers.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) adapter= FollowersAdapter(followers,requireActivity()) } @@ -89,7 +152,7 @@ class FragmentUserFollowers : Fragment() { Log.d("MyFollowers","Successsssssssssssssssssssssssssssss") followers = response.body()!!.toMutableList<UserReceive>() rvFollowers.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) adapter= FollowersAdapter(followers,requireActivity()) } } @@ -98,4 +161,13 @@ class FragmentUserFollowers : Fragment() { } }) } + override fun onResume() { + super.onResume() + if(showMy=="yes"){ + getFollowersWithoutId() + } + else if(showMy=="no") { + getFollowers() + } + } }
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt index 9a78b6e..0508c13 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserFollowing.kt @@ -1,11 +1,15 @@ package com.example.brzodolokacije.Fragments import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher import android.util.Log +import android.view.KeyEvent import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AutoCompleteTextView import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.brzodolokacije.Adapters.FollowersAdapter @@ -13,6 +17,7 @@ import com.example.brzodolokacije.Models.UserReceive import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper +import com.google.android.material.button.MaterialButton import retrofit2.Call import retrofit2.Callback import retrofit2.Response @@ -21,9 +26,12 @@ import retrofit2.Response class FragmentUserFollowing : Fragment() { private lateinit var following:MutableList<UserReceive> + private lateinit var searchedFollowing:MutableList<UserReceive> private lateinit var rvFollowing: RecyclerView private lateinit var userId:String private lateinit var showMy:String + private lateinit var searchBar: AutoCompleteTextView + private lateinit var searchButton: MaterialButton override fun onCreateView( @@ -36,15 +44,68 @@ class FragmentUserFollowing : Fragment() { userId = bundle!!.getString("userId").toString() showMy = bundle!!.getString("showMy").toString().trim() rvFollowing=view.findViewById(R.id.rvFragmentUserFollowing) - + searchBar=view.findViewById(R.id.FragmentFollowingSearchBar) + searchButton=view.findViewById(R.id.FragmentFollowingSearchBButton) if(showMy=="yes"){ getFollowingWithoutId() } else if(showMy=="no") { getFollowing() } + searchButton.setOnClickListener { + searchText() + } + searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button + if (event.action === KeyEvent.ACTION_DOWN && + keyCode == KeyEvent.KEYCODE_ENTER + ) { + // Perform action on key press + searchText() + return@OnKeyListener true + } + false + }) + searchBar.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + } + + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + searchText() + if(count==0) + if(showMy=="yes"){ + getFollowingWithoutId() + } + else if(showMy=="no") { + getFollowing() + } + } + + override fun afterTextChanged(s: Editable) { + } + }) return view } + fun searchText(){ + if(searchBar.text==null || searchBar.text.isNullOrEmpty() || searchBar.text.toString().trim()=="") + return + var text=searchBar.text.toString().trim() + if(!this::following.isInitialized) + return + searchedFollowing= mutableListOf() + for(user in following){ + if(user.username.contains(text)) + searchedFollowing.add(user) + } + rvFollowing.apply { + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) + adapter= FollowersAdapter(searchedFollowing,requireActivity()) + + } + + + + + } fun getFollowing(){ val api = RetrofitHelper.getInstance() @@ -58,7 +119,7 @@ class FragmentUserFollowing : Fragment() { Log.d("Following","Successsssssssssssssssssssssssssssss") following = response.body()!!.toMutableList<UserReceive>() rvFollowing.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) adapter= FollowersAdapter(following,requireActivity()) } } @@ -80,7 +141,7 @@ class FragmentUserFollowing : Fragment() { Log.d("MyFollowings","Successsssssssssssssssssssssssssssss") following = response.body()!!.toMutableList<UserReceive>() rvFollowing.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.VERTICAL,false) adapter= FollowersAdapter(following,requireActivity()) } } @@ -90,4 +151,14 @@ class FragmentUserFollowing : Fragment() { }) } + override fun onResume() { + super.onResume() + if(showMy=="yes"){ + getFollowingWithoutId() + } + else if(showMy=="no") { + getFollowing() + } + } + }
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt new file mode 100644 index 0000000..31f03ab --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt @@ -0,0 +1,111 @@ +import android.content.res.Resources +import android.graphics.Canvas +import android.graphics.Paint +import android.graphics.Rect +import android.view.View +import androidx.annotation.ColorInt +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.ItemDecoration + + +class LinePagerIndicatorDecoration( + radius: Int, + padding: Int, + indicatorHeight: Int, + @ColorInt colorInactive: Int, + @ColorInt colorActive: Int +) : + ItemDecoration() { + private val indicatorHeight: Int + private val indicatorItemPadding: Int + private val radius: Int + private val inactivePaint: Paint = Paint() + private val activePaint: Paint = Paint() + + init { + val strokeWidth: Float = Resources.getSystem().getDisplayMetrics().density * 1 + this.radius = radius + inactivePaint.setStrokeCap(Paint.Cap.ROUND) + inactivePaint.setStrokeWidth(strokeWidth) + inactivePaint.setStyle(Paint.Style.STROKE) + inactivePaint.setAntiAlias(true) + inactivePaint.setColor(colorInactive) + activePaint.setStrokeCap(Paint.Cap.ROUND) + activePaint.setStrokeWidth(strokeWidth) + activePaint.setStyle(Paint.Style.FILL) + activePaint.setAntiAlias(true) + activePaint.setColor(colorActive) + indicatorItemPadding = padding + this.indicatorHeight = indicatorHeight + } + + override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) { + super.onDrawOver(c, parent, state) + val adapter = parent.adapter ?: return + val itemCount = adapter.itemCount + + // center horizontally, calculate width and subtract half from center + val totalLength = (radius * 2 * itemCount).toFloat() + val paddingBetweenItems = (Math.max(0, itemCount - 1) * indicatorItemPadding).toFloat() + val indicatorTotalWidth = totalLength + paddingBetweenItems + val indicatorStartX = (parent.width - indicatorTotalWidth) / 2f + + // center vertically in the allotted space + val indicatorPosY = parent.height - indicatorHeight / 2f + drawInactiveDots(c, indicatorStartX, indicatorPosY, itemCount) + val activePosition: Int + activePosition = if (parent.layoutManager is GridLayoutManager) { + (parent.layoutManager as GridLayoutManager?)!!.findFirstVisibleItemPosition() + } else if (parent.layoutManager is LinearLayoutManager) { + (parent.layoutManager as LinearLayoutManager?)!!.findFirstVisibleItemPosition() + } else { + // not supported layout manager + return + } + if (activePosition == RecyclerView.NO_POSITION) { + return + } + + // find offset of active page if the user is scrolling + val activeChild = parent.layoutManager!!.findViewByPosition(activePosition) + ?: return + drawActiveDot(c, indicatorStartX, indicatorPosY, activePosition) + } + + private fun drawInactiveDots( + c: Canvas, + indicatorStartX: Float, + indicatorPosY: Float, + itemCount: Int + ) { + // width of item indicator including padding + val itemWidth = (radius * 2 + indicatorItemPadding).toFloat() + var start = indicatorStartX + radius + for (i in 0 until itemCount) { + c.drawCircle(start, indicatorPosY, radius.toFloat(), inactivePaint) + start += itemWidth + } + } + + private fun drawActiveDot( + c: Canvas, indicatorStartX: Float, indicatorPosY: Float, + highlightPosition: Int + ) { + // width of item indicator including padding + val itemWidth = (radius * 2 + indicatorItemPadding).toFloat() + val highlightStart = indicatorStartX + radius + itemWidth * highlightPosition + c.drawCircle(highlightStart, indicatorPosY, radius.toFloat(), activePaint) + } + + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.bottom = indicatorHeight + } +}
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt index 88685e4..43c2109 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt @@ -7,8 +7,8 @@ import retrofit2.converter.gson.GsonConverterFactory object RetrofitHelper { - //val baseUrl="http://10.0.2.2:5279" - val baseUrl="http://147.91.204.115:10082" + val baseUrl="http://10.0.2.2:5279" + //val baseUrl="http://147.91.204.115:10082" private var retrofit_noauth: IBackendApi? = null private var retrofit_auth: IBackendApi? = null diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml index 9815ce1..3b92058 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat.xml @@ -6,18 +6,6 @@ android:layout_height="match_parent" tools:context=".Activities.ChatActivity"> - <ImageButton - android:id="@+id/addNewMessage" - android:layout_width="60dp" - android:layout_height="60dp" - android:clickable="true" - android:elevation="50dp" - android:focusable="true" - android:backgroundTint="@color/unfollow" - android:src="@drawable/ic_baseline_add_message_24" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" /> - <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:id="@+id/llHeader" diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml index d68d4b6..f6b767c 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_chat_conversation.xml @@ -45,34 +45,9 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" - android:text="Chat" android:textSize="20dp" /> </androidx.appcompat.widget.LinearLayoutCompat> - <androidx.cardview.widget.CardView - android:id="@+id/cvParentUsername" - android:layout_width="wrap_content" - android:layout_height="40dp" - android:layout_gravity="center_vertical" - android:layout_weight="1" - android:elevation="0dp" - app:cardCornerRadius="20dp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> - - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/etReceiverUsername" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@drawable/rounded_white_button_login" - android:hint=" kome slati poruku?" - android:inputType="textPersonName" - android:paddingLeft="15dp" /> - - - </androidx.cardview.widget.CardView> </androidx.appcompat.widget.LinearLayoutCompat> diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml index 5841b49..95545c2 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml @@ -5,10 +5,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".Activities.ActivityForgottenPassword"> - +<androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> <LinearLayout - android:layout_width="399dp" - android:layout_height="556dp" + android:layout_width="350dp" + android:layout_height="570dp" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -71,5 +73,6 @@ android:layout_height="30dp" /> </LinearLayout> +</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml index c652469..0b8b7f0 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml @@ -6,8 +6,11 @@ android:layout_height="match_parent" tools:context=".Activities.ActivityForgottenPassword"> + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent"> <LinearLayout - android:layout_width="398dp" + android:layout_width="350dp" android:layout_height="match_parent" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" @@ -102,5 +105,6 @@ android:layout_height="30dp" /> </LinearLayout> + </androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml index 8b820bc..579e402 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_followers.xml @@ -1,18 +1,58 @@ <?xml version="1.0" encoding="utf-8"?> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".Fragments.FragmentUserFollowers"> <!-- TODO: Update blank fragment layout --> <TextView + android:id="@+id/textView17" android:layout_width="match_parent" android:layout_height="match_parent" /> + <androidx.cardview.widget.CardView + android:id="@+id/FragmentBrowseCardViewSearch" + android:layout_width="0dp" + android:layout_height="40dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:elevation="10dp" + app:cardCornerRadius="20dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + <AutoCompleteTextView + android:id="@+id/FragmentFollowersSearchBar" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:backgroundTint="@color/white" + android:hint=" Pretraga" + android:inputType="textPersonName" + android:paddingLeft="15dp" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/FragmentFollowersSearchBButton" + android:layout_width="49dp" + android:layout_height="match_parent" + android:layout_gravity="right" + android:background="#00FFFFFF" + app:backgroundTint="#00FFFFFF" + app:cornerRadius="16dp" + app:icon="@drawable/ic_baseline_search_24" + app:iconTint="#333D70" /> + + </androidx.cardview.widget.CardView> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rvFragmentUserFollowers" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="wrap_content" + android:layout_marginTop="15dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/FragmentBrowseCardViewSearch" /> -</FrameLayout>
\ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml index 7558375..f7c07df 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_following.xml @@ -1,18 +1,58 @@ <?xml version="1.0" encoding="utf-8"?> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + xmlns:app="http://schemas.android.com/apk/res-auto" tools:context=".Fragments.FragmentUserFollowing"> <!-- TODO: Update blank fragment layout --> <TextView + android:id="@+id/textView16" android:layout_width="match_parent" android:layout_height="match_parent" /> + <androidx.cardview.widget.CardView + android:id="@+id/FragmentBrowseCardViewSearch" + android:layout_width="0dp" + android:layout_height="40dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:elevation="10dp" + app:cardCornerRadius="20dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + + <AutoCompleteTextView + android:id="@+id/FragmentFollowingSearchBar" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:backgroundTint="@color/white" + android:hint=" Pretraga" + android:inputType="textPersonName" + android:paddingLeft="15dp" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/FragmentFollowingSearchBButton" + android:layout_width="49dp" + android:layout_height="match_parent" + android:layout_gravity="right" + android:background="#00FFFFFF" + app:backgroundTint="#00FFFFFF" + app:cornerRadius="16dp" + app:icon="@drawable/ic_baseline_search_24" + app:iconTint="#333D70" /> + + </androidx.cardview.widget.CardView> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rvFragmentUserFollowing" android:layout_width="match_parent" - android:layout_height="match_parent" /> + android:layout_height="wrap_content" + android:layout_marginTop="15dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/FragmentBrowseCardViewSearch" /> -</FrameLayout>
\ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file |