Improve UI

This commit is contained in:
Nezumi
2023-04-23 14:53:55 +07:00
parent 5da3129594
commit 5def98dede
28 changed files with 365 additions and 219 deletions
+2 -2
View File
@@ -26,7 +26,7 @@ android {
minSdk 26
targetSdk 32
versionCode 1
versionName "0.4.0"
versionName "0.5.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.release
@@ -92,7 +92,6 @@ dependencies {
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.github.ome450901:SimpleRatingBar:1.5.1'
implementation 'com.cepheuen.elegant-number-button:lib:1.0.2'
implementation 'com.saadahmedev.popup-dialog:popup-dialog:1.0.2'
implementation 'com.github.techinessoverloaded:progress-dialog:1.5.1'
implementation 'androidx.browser:browser:1.5.0'
@@ -109,5 +108,6 @@ dependencies {
implementation(project(':aestheticdialogs'))
implementation(project(':SJDialog'))
implementation(project(':popupDialog'))
}
Binary file not shown.
+1 -1
View File
@@ -12,7 +12,7 @@
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "0.3.4",
"versionName": "0.5.2",
"outputFile": "app-release.apk"
}
],
+2 -2
View File
@@ -50,7 +50,7 @@
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="foodify-notification"/>
<service android:name=".RefreshTokenService"
<service android:name=".Service.RefreshTokenService"
android:permission="android.permission.BIND_JOB_SERVICE"
/>
@@ -139,7 +139,7 @@
</activity>
<service
android:name=".NotificationService"
android:name=".Service.NotificationService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
@@ -48,7 +48,7 @@ public interface FoodApi {
@GET("products/search/enable")
Call<Foods> searchFoodByName(@Query("productName") String name, @Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("sortBy") String sortBy, @Query("sortDir") String sortDir);
@GET("products")
@GET("products/random")
Call<Foods> listFood(@Query("pageNo") int pageNo, @Query("pageSize") int pageSize, @Query("sortBy") String sortBy, @Query("sortDir") String sortDir);
@GET("categories/randoms?pageNo=0&pageSize=7")
@@ -58,7 +58,7 @@ public class AddressManagerActivity extends AppCompatActivity {
private Button add_address_button;
private TextInputLayout textInput_address;
private ImageView back_image, edit_btn;
private TextView txt_Address, errorTextDistrictWard;
private TextView txt_Address, errorTextDistrict, errorTextWard;
private List<Address> listAddress = new ArrayList<>();
private Spinner wardSpinner, districtSpinner;
private EditText edt_address;
@@ -490,7 +490,8 @@ public class AddressManagerActivity extends AppCompatActivity {
wardSpinner = view.findViewById(R.id.ward);
districtSpinner = view.findViewById(R.id.district);
edt_address = view.findViewById(R.id.edt_address);
errorTextDistrictWard = view.findViewById(R.id.errorTextDistrictWard);
errorTextDistrict = view.findViewById(R.id.errorTextDistrict);
errorTextWard = view.findViewById(R.id.errorTextWard);
progressLayoutDialog = view.findViewById(R.id.progress_layout);
default_address_checkbox = view.findViewById(R.id.checkbox_default_address);
}
@@ -507,18 +508,22 @@ public class AddressManagerActivity extends AppCompatActivity {
textInput_address.setErrorEnabled(false);
}
//Check district and ward
if(district.equals("---Quận") || ward.equals("---Phường")){
if(!district.equals("Huyện Hoàng Sa")){
errorTextDistrictWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else{
errorTextDistrictWard.setVisibility(View.GONE);
}
//Check ward
if(ward.equals("---Phường")){
errorTextWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrictWard.setVisibility(View.GONE);
errorTextWard.setVisibility(View.GONE);
}
//Check district
if(district.equals("---Quận")){
errorTextDistrict.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrict.setVisibility(View.GONE);
}
return dataHasValidate;
@@ -589,7 +594,7 @@ public class AddressManagerActivity extends AppCompatActivity {
}
private void setAdapter(ArrayList<String> data, String defaultItem, Spinner dataSpinner){
MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, data);
MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), R.layout.spinner_text_view, data);
dataSpinner.setAdapter(adapterWard); // this will set list of values to spinner
dataSpinner.setSelection(data.indexOf(defaultItem));//set selected value in spinner
}
@@ -49,11 +49,13 @@ import com.denzcoskun.imageslider.constants.ScaleTypes;
import com.denzcoskun.imageslider.models.SlideModel;
import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
import com.makeramen.roundedimageview.RoundedImageView;
import com.mcdev.quantitizerlibrary.AnimationStyle;
import com.mcdev.quantitizerlibrary.HorizontalQuantitizer;
import com.mcdev.quantitizerlibrary.QuantitizerListener;
import com.sjapps.library.customdialog.BasicDialog;
import com.sjapps.library.customdialog.DialogButtonEvents;
import com.squareup.picasso.Picasso;
import com.thecode.aestheticdialogs.DialogStyle;
import com.thecode.aestheticdialogs.DialogType;
import com.willy.ratingbar.RotationRatingBar;
@@ -83,6 +85,7 @@ public class FoodDetailActivity extends AppCompatActivity {
private Food food;
private TextView foodName_txt, shopName_txt, discount_txt, price_txt, countRating_txt, description_content_txt, endOfListText,
userNameComment, contentComment, count_sold_txt;
private RoundedImageView profile_avatar;
private ConstraintLayout content_view;
private Button add_to_basket_button;
private float totalPrice, price;
@@ -147,6 +150,7 @@ public class FoodDetailActivity extends AppCompatActivity {
list_category = findViewById(R.id.list_category);
count_sold_txt = findViewById(R.id.count_sold);
swipeRefreshLayout = findViewById(R.id.swipe_refresh);
profile_avatar = findViewById(R.id.profile_avatar);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -537,6 +541,13 @@ public class FoodDetailActivity extends AppCompatActivity {
description_content_txt.setText(food.getDescription());
ratingBar.setRating(food.getAverageRating());
//Set image for user
if(Common.CURRENT_USER.getImageUrl().isEmpty()){
profile_avatar.setImageResource(R.drawable.profile_avatar);
} else {
Picasso.get().load(Common.CURRENT_USER.getImageUrl()).into(profile_avatar);
}
if(food.getReviewCount() == null || Integer.parseInt(food.getReviewCount()) == 0){
countRating_txt.setText("Chưa có bình luận nào!");
} else {
@@ -44,8 +44,8 @@ import com.capstone.foodify.Fragment.HomeFragment;
import com.capstone.foodify.Model.Response.CustomResponse;
import com.capstone.foodify.Model.User;
import com.capstone.foodify.R;
import com.capstone.foodify.RefreshTokenService;
import com.capstone.foodify.ViewPagerAdapter;
import com.capstone.foodify.Service.RefreshTokenService;
import com.capstone.foodify.Fragment.ViewPagerAdapter;
import com.google.android.gms.common.api.ApiException;
import com.google.android.gms.common.api.ResolvableApiException;
import com.google.android.gms.location.FusedLocationProviderClient;
@@ -230,6 +230,17 @@ public class MainActivity extends AppCompatActivity {
getLocation();
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(!slider || !shop || !recentFood || !recommendFood){
Common.showErrorServerNotification(MainActivity.this, "Đã có lỗi từ hệ thống, vui lòng thử lại sau!");
}
}
}, 10000);
}
private void startRefreshTokenService() {
@@ -86,7 +86,7 @@ public class OrderCheckOutActivity extends AppCompatActivity {
private ImageView back_image;
private OrderDetailAdapter adapter;
private RecyclerView recyclerView;
private TextView txt_userName, txt_phone, edt_address_detect, errorTextDistrictWard, txt_total, txt_distance, txt_ship_cost;
private TextView txt_userName, txt_phone, edt_address_detect, errorTextDistrict, errorTextWard, txt_total, txt_distance, txt_ship_cost;
private TextInputLayout textInput_address;
private EditText edt_address;
private Spinner spn_list_address, spn_district, spn_ward;
@@ -117,7 +117,8 @@ public class OrderCheckOutActivity extends AppCompatActivity {
manual_input_address = findViewById(R.id.manual_input_address);
edt_address = findViewById(R.id.edt_address);
address_option = findViewById(R.id.address_option);
errorTextDistrictWard = findViewById(R.id.errorTextDistrictWard);
errorTextDistrict = findViewById(R.id.errorTextDistrict);
errorTextWard = findViewById(R.id.errorTextWard);
textInput_address = findViewById(R.id.textInput_address);
txt_total = findViewById(R.id.txt_total);
take_food_from_shop = findViewById(R.id.take_food_from_shop);
@@ -607,18 +608,22 @@ public class OrderCheckOutActivity extends AppCompatActivity {
textInput_address.setErrorEnabled(false);
}
//Check district and ward
if(spn_district.getSelectedItem().toString().equals("---Quận") || spn_ward.getSelectedItem().toString().equals("---Phường")){
if(!spn_district.getSelectedItem().toString().equals("Huyện Hoàng Sa")){
errorTextDistrictWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else{
errorTextDistrictWard.setVisibility(View.GONE);
}
//Check ward
if(spn_ward.getSelectedItem().toString().equals("---Phường")){
errorTextWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrictWard.setVisibility(View.GONE);
errorTextWard.setVisibility(View.GONE);
}
//Check district
if(spn_district.getSelectedItem().toString().equals("---Quận")){
errorTextDistrict.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrict.setVisibility(View.GONE);
}
return dataHasValidate;
@@ -832,7 +837,7 @@ public class OrderCheckOutActivity extends AppCompatActivity {
}
private void setAdapter(ArrayList<String> data, String defaultItem, Spinner dataSpinner){
OrderCheckOutActivity.MySpinnerAdapter adapterWard = new OrderCheckOutActivity.MySpinnerAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, data);
OrderCheckOutActivity.MySpinnerAdapter adapterWard = new OrderCheckOutActivity.MySpinnerAdapter(getApplicationContext(), R.layout.spinner_text_view, data);
dataSpinner.setAdapter(adapterWard); // this will set list of values to spinner
dataSpinner.setSelection(data.indexOf(defaultItem));//set selected value in spinner
}
@@ -66,7 +66,7 @@ public class SignUpActivity extends AppCompatActivity {
textInput_address, textInput_confirmPassword, textInput_fullName, textInput_birthDay;
final Calendar myCalendar= Calendar.getInstance();
private EditText edt_birthday, edt_phone, edt_passWord, edt_confirmPassword, edt_fullName, edt_address, edt_email, edt_id_card;
private TextView signIn_textView, errorText, errorTextDistrictWard;
private TextView signIn_textView, errorText, errorTextDistrict, errorTextWard;
private Spinner wardSpinner, districtSpinner;
private ImageView back_image;
private MaterialButton signUpButton;
@@ -102,7 +102,8 @@ public class SignUpActivity extends AppCompatActivity {
signIn_textView = (TextView) findViewById(R.id.signIn_textView);
errorText = findViewById(R.id.errorText);
errorTextDistrictWard = findViewById(R.id.errorTextDistrictWard);
errorTextDistrict = findViewById(R.id.errorTextDistrict);
errorTextWard = findViewById(R.id.errorTextWard);
back_image = (ImageView) findViewById(R.id.back_image);
@@ -383,15 +384,23 @@ public class SignUpActivity extends AppCompatActivity {
textInput_address.setErrorEnabled(false);
}
//Check district and ward
if(district.equals("---Quận") || ward.equals("---Phường")){
errorTextDistrictWard.setVisibility(View.VISIBLE);
//Check ward
if(ward.equals("---Phường")){
errorTextWard.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrictWard.setVisibility(View.GONE);
errorTextWard.setVisibility(View.GONE);
}
//Check district
if(district.equals("---Quận")){
errorTextDistrict.setVisibility(View.VISIBLE);
dataHasValidate = false;
} else {
errorTextDistrict.setVisibility(View.GONE);
}
//Check password
@@ -560,7 +569,7 @@ public class SignUpActivity extends AppCompatActivity {
}
private void setAdapter(ArrayList<String> data, String defaultItem, Spinner dataSpinner){
MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, data);
MySpinnerAdapter adapterWard = new MySpinnerAdapter(getApplicationContext(), R.layout.spinner_text_view, data);
dataSpinner.setAdapter(adapterWard); // this will set list of values to spinner
dataSpinner.setSelection(data.indexOf(defaultItem));//set selected value in spinner
}
@@ -13,7 +13,6 @@ import android.os.CountDownTimer;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
@@ -35,7 +34,7 @@ import com.capstone.foodify.API.FoodApi;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.User;
import com.capstone.foodify.R;
import com.capstone.foodify.SmsBroadcastReceiver;
import com.capstone.foodify.Service.SmsBroadcastReceiver;
import com.google.android.gms.auth.api.phone.SmsRetriever;
import com.google.android.gms.auth.api.phone.SmsRetrieverClient;
import com.google.android.gms.tasks.OnCompleteListener;
@@ -9,8 +9,11 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Comment;
import com.capstone.foodify.R;
import com.makeramen.roundedimageview.RoundedImageView;
import com.squareup.picasso.Picasso;
import com.willy.ratingbar.ScaleRatingBar;
import java.util.List;
@@ -43,6 +46,13 @@ public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.CommentV
holder.name.setText(comment.getUser().getFullName());
holder.ratingScore.setRating(comment.getRating());
holder.content.setText(comment.getContent());
//Bind image avatar user
if(comment.getUser().getImageUrl() == null){
holder.profile_avatar.setImageResource(R.drawable.profile_avatar);
} else {
Picasso.get().load(Common.CURRENT_USER.getImageUrl()).into(holder.profile_avatar);
}
}
@Override
@@ -54,8 +64,9 @@ public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.CommentV
public class CommentViewHolder extends RecyclerView.ViewHolder{
private TextView name, content;
private ScaleRatingBar ratingScore;
private final TextView name, content;
private final ScaleRatingBar ratingScore;
private final RoundedImageView profile_avatar;
public CommentViewHolder(@NonNull View itemView) {
super(itemView);
@@ -63,6 +74,8 @@ public class CommentAdapter extends RecyclerView.Adapter<CommentAdapter.CommentV
name = itemView.findViewById(R.id.user_name_text_view);
ratingScore = itemView.findViewById(R.id.rating_bar);
content = itemView.findViewById(R.id.comment_user);
profile_avatar = itemView.findViewById(R.id.profile_avatar);
}
}
}
@@ -3,6 +3,7 @@ package com.capstone.foodify.Adapter;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -148,7 +149,9 @@ public class FoodFavoriteAdapter extends RecyclerView.Adapter<FoodFavoriteAdapt
FoodApiToken.apiService.removeFoodFromFavorite(Common.CURRENT_USER.getId(), Integer.parseInt(food.getId())).enqueue(new Callback<Food>() {
@Override
public void onResponse(Call<Food> call, Response<Food> response) {
Toast.makeText(context, "Đã xoá " + food.getName() + " khỏi danh sách yêu thích!", Toast.LENGTH_SHORT).show();
if(response.code() != 200){
Log.e("Food favorite", "Error remove favorite food. Error code: " + response.code());
}
}
@Override
@@ -1,4 +1,4 @@
package com.capstone.foodify;
package com.capstone.foodify.Fragment;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
@@ -1,4 +1,4 @@
package com.capstone.foodify;
package com.capstone.foodify.Service;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -17,7 +17,9 @@ import androidx.core.app.NotificationCompat;
import com.capstone.foodify.API.FoodApiToken;
import com.capstone.foodify.Activity.MainActivity;
import com.capstone.foodify.Common;
import com.capstone.foodify.Model.Response.CustomResponse;
import com.capstone.foodify.R;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
@@ -1,4 +1,4 @@
package com.capstone.foodify;
package com.capstone.foodify.Service;
import android.app.job.JobParameters;
import android.app.job.JobService;
@@ -6,6 +6,7 @@ import android.util.Log;
import androidx.annotation.NonNull;
import com.capstone.foodify.Common;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.GetTokenResult;
@@ -1,4 +1,4 @@
package com.capstone.foodify;
package com.capstone.foodify.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -31,5 +31,5 @@ public class Helpers {
@NotNull
public static String getMac(@NotNull String key, @NotNull String data) throws NoSuchAlgorithmException, InvalidKeyException {
return Objects.requireNonNull(HMacUtil.HMacHexStringEncode(HMacUtil.HMACSHA256, key, data));
}
}
}
@@ -356,7 +356,7 @@
app:layout_constraintTop_toBottomOf="@id/linear_layout_2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
android:visibility="visible"
android:id="@+id/user_comment_layout"
>
@@ -365,70 +365,93 @@
android:layout_height="match_parent"
android:layout_margin="10dp"
>
<TextView
android:id="@+id/user_name_text_view"
android:text="User A"
android:fontFamily="@font/koho"
android:textColor="@color/black"
android:textSize="16sp"
android:layout_width="wrap_content"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
android:id="@+id/layout1"
>
<com.willy.ratingbar.ScaleRatingBar
android:id="@+id/rating_bar_comment"
android:layout_width="110dp"
android:layout_height="26dp"
app:srb_starPadding="5dp"
app:srb_clickable="false"
app:srb_starWidth="12dp"
app:srb_starHeight="12dp"
app:srb_numStars="5"
app:srb_scrollable="false"
app:layout_constraintTop_toBottomOf="@id/user_name_text_view"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="-5dp"
/>
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/profile_avatar"
android:src="@drawable/profile_avatar"
app:riv_corner_radius="180dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
<TextView
android:id="@+id/user_name_text_view"
android:text="User A"
android:fontFamily="@font/koho_bold"
android:textColor="@color/black"
android:textSize="16sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/profile_avatar"
app:layout_constraintBottom_toBottomOf="parent"
/>
<com.willy.ratingbar.ScaleRatingBar
android:id="@+id/rating_bar_comment"
android:layout_width="110dp"
android:layout_height="22dp"
app:srb_starPadding="5dp"
app:srb_clickable="false"
app:srb_starWidth="12dp"
app:srb_starHeight="12dp"
app:srb_numStars="5"
app:srb_scrollable="false"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="-5dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/comment_user"
android:text="Food is good!"
android:fontFamily="@font/koho"
android:textSize="15sp"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:layout_constraintTop_toBottomOf="@id/rating_bar_comment"
app:layout_constraintTop_toBottomOf="@id/layout1"
app:layout_constraintStart_toStartOf="parent"
/>
<LinearLayout
android:layout_width="30dp"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/comment_user"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:orientation="vertical"
android:orientation="horizontal"
>
<ImageView
android:src="@drawable/baseline_edit_24"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.5"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/edit_button"
android:layout_marginBottom="10dp"
android:layout_marginEnd="30dp"
/>
<ImageView
android:id="@+id/delete_button"
android:src="@drawable/baseline_delete_24"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.5"
android:layout_height="wrap_content"
/>
@@ -242,49 +242,59 @@
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/linearLayout_district_ward"
<Spinner
android:id="@+id/ward"
android:textAlignment="viewEnd"
android:layout_width="match_parent"
android:layout_height="60dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInput_address"
android:orientation="horizontal"
>
<Spinner
android:id="@+id/district"
android:layout_width="0dp"
android:layout_height="match_parent"
android:textAlignment="viewEnd"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="district"
android:layout_weight="0.43"
/>
<Spinner
android:id="@+id/ward"
android:textAlignment="viewEnd"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="ward"
android:layout_weight="0.57"
/>
</LinearLayout>
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="ward"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
app:layout_constraintTop_toBottomOf="@id/textInput_address"
/>
<TextView
android:id="@+id/errorTextDistrictWard"
android:text="Bạn chưa chọn quận huyện!"
android:id="@+id/errorTextWard"
android:text="Bạn chưa chọn phường!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:textSize="12sp"
android:textColor="#b00020"
app:layout_constraintTop_toBottomOf="@id/linearLayout_district_ward"
app:layout_constraintTop_toBottomOf="@id/ward"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
/>
<Spinner
android:id="@+id/district"
android:textAlignment="viewEnd"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="district"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ward"
/>
<TextView
android:id="@+id/errorTextDistrict"
android:text="Bạn chưa chọn quận!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:textSize="12sp"
android:textColor="#b00020"
app:layout_constraintTop_toBottomOf="@id/district"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
+40 -33
View File
@@ -187,8 +187,40 @@
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/linearLayout_district_ward"
<Spinner
android:id="@+id/ward"
android:textAlignment="viewEnd"
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="ward"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
app:layout_constraintTop_toBottomOf="@id/textInput_address"
/>
<TextView
android:id="@+id/errorTextWard"
android:text="Bạn chưa chọn phường!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:textSize="12sp"
android:textColor="#b00020"
app:layout_constraintTop_toBottomOf="@id/ward"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
/>
<Spinner
android:id="@+id/district"
android:textAlignment="viewEnd"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="district"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginRight="20dp"
@@ -196,43 +228,18 @@
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInput_address"
android:orientation="horizontal"
>
<Spinner
android:id="@+id/district"
android:layout_width="0dp"
android:layout_height="match_parent"
android:textAlignment="viewEnd"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="district"
android:layout_weight="0.4"
/>
<Spinner
android:id="@+id/ward"
android:textAlignment="viewEnd"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="ward"
android:layout_weight="0.6"
/>
</LinearLayout>
app:layout_constraintTop_toBottomOf="@+id/ward"
/>
<TextView
android:id="@+id/errorTextDistrictWard"
android:text="Bạn chưa chọn quận huyện!"
android:id="@+id/errorTextDistrict"
android:text="Bạn chưa chọn quận!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:textSize="12sp"
android:textColor="#b00020"
app:layout_constraintTop_toBottomOf="@id/linearLayout_district_ward"
app:layout_constraintTop_toBottomOf="@id/district"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
@@ -249,7 +256,7 @@
app:boxBackgroundColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout_district_ward"
app:layout_constraintTop_toBottomOf="@+id/district"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/primaryColor"
app:startIconDrawable="@drawable/baseline_vpn_key_24"
+46 -39
View File
@@ -35,52 +35,59 @@
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/linearLayout_district_ward"
<Spinner
android:id="@+id/ward"
android:textAlignment="viewEnd"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInput_address"
android:orientation="horizontal"
>
<Spinner
android:id="@+id/district"
android:layout_width="0dp"
android:layout_height="match_parent"
android:textAlignment="viewEnd"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="district"
android:layout_weight="0.43"
/>
<Spinner
android:id="@+id/ward"
android:textAlignment="viewEnd"
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="ward"
android:layout_weight="0.57"
/>
</LinearLayout>
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="ward"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
app:layout_constraintTop_toBottomOf="@id/textInput_address"
/>
<TextView
android:id="@+id/errorTextDistrictWard"
android:text="Bạn chưa chọn quận huyện!"
android:id="@+id/errorTextWard"
android:text="Bạn chưa chọn phường!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:fontFamily="@font/koho"
android:textSize="12sp"
android:textColor="#b00020"
app:layout_constraintTop_toBottomOf="@id/linearLayout_district_ward"
app:layout_constraintTop_toBottomOf="@id/ward"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
/>
<Spinner
android:id="@+id/district"
android:textAlignment="viewEnd"
android:gravity="end"
android:paddingEnd="25dp"
android:contentDescription="district"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ward"
/>
<TextView
android:id="@+id/errorTextDistrict"
android:text="Bạn chưa chọn quận!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:textSize="12sp"
android:textColor="#b00020"
app:layout_constraintTop_toBottomOf="@id/district"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="gone"
@@ -92,10 +99,10 @@
android:fontFamily="@font/koho"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginTop="20dp"
android:layout_marginStart="10dp"
android:buttonTint="@color/primaryColor"
app:layout_constraintTop_toBottomOf="@id/errorTextDistrictWard"
app:layout_constraintTop_toBottomOf="@id/district"
app:layout_constraintStart_toStartOf="parent"
/>
+3 -1
View File
@@ -5,6 +5,8 @@
android:id="@+id/chip_item"
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
android:textAppearance="@style/chipText"
>
</com.google.android.material.chip.Chip>
+3 -3
View File
@@ -19,8 +19,8 @@
android:id="@+id/profile_avatar"
android:src="@drawable/profile_avatar"
app:riv_corner_radius="180dp"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_width="120dp"
android:layout_height="120dp"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -48,7 +48,7 @@
android:id="@+id/account_and_profile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="90dp"
android:layout_marginTop="70dp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
app:layout_constraintTop_toBottomOf="@id/user_name"
+49 -23
View File
@@ -20,32 +20,58 @@
android:layout_height="match_parent"
android:layout_margin="10dp"
>
<TextView
android:id="@+id/user_name_text_view"
android:text="User A"
android:fontFamily="@font/koho_bold"
android:textColor="@color/black"
android:textSize="16sp"
android:layout_width="wrap_content"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
android:id="@+id/layout1"
>
<com.willy.ratingbar.ScaleRatingBar
android:id="@+id/rating_bar"
android:layout_width="110dp"
android:layout_height="26dp"
app:srb_starPadding="5dp"
app:srb_clickable="false"
app:srb_starWidth="12dp"
app:srb_starHeight="12dp"
app:srb_numStars="5"
app:srb_scrollable="false"
app:layout_constraintTop_toBottomOf="@id/user_name_text_view"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="-5dp"
/>
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/profile_avatar"
android:src="@drawable/profile_avatar"
app:riv_corner_radius="180dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
<TextView
android:id="@+id/user_name_text_view"
android:text="User A"
android:fontFamily="@font/koho_bold"
android:textColor="@color/black"
android:textSize="16sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/profile_avatar"
app:layout_constraintBottom_toBottomOf="parent"
/>
<com.willy.ratingbar.ScaleRatingBar
android:id="@+id/rating_bar"
android:layout_width="110dp"
android:layout_height="22dp"
app:srb_starPadding="5dp"
app:srb_clickable="false"
app:srb_starWidth="12dp"
app:srb_starHeight="12dp"
app:srb_numStars="5"
app:srb_scrollable="false"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="-5dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/comment_user"
@@ -55,7 +81,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:layout_constraintTop_toBottomOf="@id/rating_bar"
app:layout_constraintTop_toBottomOf="@id/layout1"
app:layout_constraintStart_toStartOf="parent"
/>
+1 -1
View File
@@ -22,7 +22,7 @@
android:text="Order #123456789"
android:fontFamily="@font/koho_bold"
android:textColor="@color/primaryColor"
android:textSize="25sp"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/spinnerItemStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left" />
+5
View File
@@ -67,4 +67,9 @@
<item name="android:fontFamily">@font/koho</item>
</style>
<style name="chipText" parent="TextAppearance.MaterialComponents.Chip">
<item name="android:textSize">14sp</item>
<item name="android:fontFamily">@font/koho</item>
</style>
</resources>