تطبيق إعلانات بأندرويد و firebase الجزء السابع

تطبيق إعلانات بأندرويد و firebase الجزء السابع


فهاد الجزء السابع من تطبيق إعلانات بأندرويد و firebase غادي نكملو الملفات ديالنا غادي نشوفوا كيفاش نمكنوا المستخدم من أنه يدير البحث على إعلانات ومنبعد يتعرضوا ويمكنلو يشاهد التفاصيل ديال كل إعلان بغاه بالإضافة لإمكانية إضافة أي إعلان للقائمة المفضلة.

نظرة سريعة بالفيديو

1- إضافة الملف SearchActivity.java

فالمجلد java  كاين الملف  SearchActivity.java فيه غادي يكون الكود لي غادي يمكن باش نسترجعوا القيمة لي دخل المستخدم فالحقل ديال البحث ومن بعد غادي نخدمو بSharedPreferences لي هي بحال جدول كنخزنو فيه المعلومات لي بغينا لكن عكس الجدول المعلومات كتبقى وخا تسد التطبيق وتعاود تفتحو وهاد القيمة لي دخل كنعطيوها اسم data لي هي variable static كاينة فالملف SearchResult.java ولي غادي نزيدوه فالجزء القادم من بعد مكتخزن القيمة كتسد SearchActivity والكود لي ف onCreate هداك غير باش كنزيدو toolbar ل SearchActivity الكود ديال الملف هو:

                                package com.example.belasri.hiresell;

import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

public class SearchActivity extends AppCompatActivity {
    private Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.search_view, menu);
        // Get the SearchView and set the searchable configuration
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        final SearchView searchView = (SearchView) menu.findItem(R.id.search_view).getActionView();
        // Assumes current activity is the searchable activity
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default
        //process searching
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                prefs.edit().putString(SearchResult.data,query).commit();
                searchView.clearFocus();
                Intent searchIntent = new Intent(SearchActivity.this,SearchResult.class);
                startActivity(searchIntent);
                finish();
                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });
        searchView.setOnCloseListener(new SearchView.OnCloseListener() {
            @Override
            public boolean onClose() {
                finish();
                return false;
            }
        });
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        return super.onOptionsItemSelected(item);
    }

}
                            

2- إضافة الملف activity_search_result.xml

باش نزيد ملف عرض الإعلانات لي بحث عليها المستخدم سير ل dossier java زيد activity جديدة سميها SearchResult منبعد سير ل dossier res/layout فيه غادي تلقى الملف activity_search_result.xml لي فيه زدنا Recycler View لي غادي تعرض فيها الإعلانات منبعد عندي واحد RelativeLayout لي فيها TextView و ImageView لي غادي يتعرضوا يلا مكان عندنا حتى إعلان فالقائمة المفضلة الكود ديال الملف هو :

                                <?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:background="#EFF0F1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.belasri.hiresell.SearchResult">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <include layout="@layout/toolbar"></include>
    </RelativeLayout>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_marginTop="55dp"
        android:padding="5dp"
        android:layout_marginBottom="55dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v7.widget.RecyclerView>
    <RelativeLayout
        android:id="@+id/emptySearch"
        android:layout_width="match_parent"
        android:background="@color/white"
        android:visibility="gone"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/empty_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textColor="@color/colorPrimary"
            android:layout_below="@+id/emptyHeart"
            android:textSize="30sp"
            android:text="No Results" />
        <ImageView
            android:id="@+id/emptyHeart"
            android:src="@drawable/ic_search"
            android:layout_marginRight="10dp"
            android:tint="@color/colorPrimary"
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RelativeLayout>
</android.support.design.widget.CoordinatorLayout>
                            

3- إضافة الملف SearchResult.java

فالمجلد java  كاين الملف  SearchResult.java فيه غادي يكون الكود لي غادي يمكن باش نعرض الإعلانات لي بحث عليهم المستخدم فكنسترجع ل recycler view و textview من activity_search_result و la table Ads من firebase منبعد كنسترجع القيمة لي دخل المستخدم فحقل البحث بواسطة ل fonction getSavedData منبعد كنعطي لقيمة لل fonction showAds لي ف la table لي هي adsDb كنقلب على شي إعلان لي العنوان ديالو كيبدا أو كيسالي بالكلمة لي دخل المستخدم من بعد يلا كانوا نتائج كنبين recycler view مكانوش كنبين textview لي فيها aucun résultat وهنا كيف درنا قبل كنخدم ب FirebaseRecyclerAdapter لي كيمكنا باش نزيدو المعلومات لي استرجعنا فبلايصهم فكنعطيه ل class AdInfo و ل list_item.xml ول AdsViewHolder لي غادي تمكنا باش نmodifier المعلومات لي فال ImageView و TextView منبعد مكنسترجعهم وكنعطيه ايضا référence لقاعدة البيانات وكنزيد لRecyclerView   ل onclick لي كتمكني باش ملي نضغط على شي إعلان كنصيفط ل id ديالو ل AdDetails لي غادي تمكنا من مشاهدة تفاصيل الإعلان الكود ديال الملف هو : 

                                package com.example.belasri.hiresell;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;

import models.AdInfo;

import static com.example.belasri.hiresell.R.id.liste;

public class SearchResult extends AppCompatActivity {
    public final static String data = "data";
    private Toolbar toolbar;
    private TextView userHeaderName,userEmailName;
    private ImageView HeaderProfileImage;
    private DatabaseReference adsDb;
    private RecyclerView recyclerview;
    private RelativeLayout relativeLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search_result);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        recyclerview = (RecyclerView) findViewById(R.id.recyclerView);
        LinearLayoutManager linearManager = new LinearLayoutManager(this);
        linearManager.setOrientation(linearManager.VERTICAL);
        recyclerview.setLayoutManager(new GridLayoutManager(this,2));
        recyclerview.setItemAnimator(new DefaultItemAnimator());
        adsDb = FirebaseDatabase.getInstance().getReference().child("Ads");
        relativeLayout = (RelativeLayout) findViewById(R.id.emptySearch);
        String query = getSavedData(data);
        Log.d("querstored",query);
        showAds(query);
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        finish();
    }

    private void showAds(String query){
        FirebaseRecyclerAdapter<AdInfo, AdsViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<AdInfo, AdsViewHolder>(
                AdInfo.class,
                R.layout.list_item,
                AdsViewHolder.class,
                adsDb.orderByChild("title").startAt(query).endAt(query+"\uf8ff")
        ) {
            @Override
            protected void onDataChanged() {
                super.onDataChanged();
                if(getItemCount() == 0){
                    recyclerview.setVisibility(View.GONE);
                    relativeLayout.setVisibility(View.VISIBLE);
                }else {
                    recyclerview.setVisibility(View.VISIBLE);
                    relativeLayout.setVisibility(View.GONE);
                }

            }

            @Override
            protected void populateViewHolder(AdsViewHolder viewHolder, AdInfo model, int position) {
                //get selected post id
                final String ad_id = getRef(position).getKey().toString();
                viewHolder.setTitle(model.getTitle());
                viewHolder.setCity(model.getCity());
                viewHolder.setImage(model.getImageUrl(),getApplicationContext());
                Log.d("SearchedData",model.toString());
                viewHolder.view.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent singlePost = new Intent(SearchResult.this,AdDetails.class);
                        singlePost.putExtra("ad_id",ad_id);
                        startActivity(singlePost);
                        finish();
                    }
                });
            }
        };
        recyclerview.setAdapter(firebaseRecyclerAdapter);
    }
    public static class AdsViewHolder extends RecyclerView.ViewHolder{
        View view;
        public AdsViewHolder(View itemView) {
            super(itemView);
            view = itemView;
        }
        public void setTitle(String title){
            TextView adTitle = (TextView) view.findViewById(R.id.title);
            adTitle.setText(title);
        }
        public void setCity(String city){
            TextView adCity = (TextView) view.findViewById(R.id.city);
            adCity.setText(city);
        }
        public void setImage(String image,Context ctx){
            ImageView imageView = (ImageView) view.findViewById(R.id.image);
            Picasso.with(ctx).load(image).into(imageView);
        }
    }
    private String getSavedData(String data) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        return  prefs.getString(data,"");
    }
}
                            

4- إضافة الملف SessionManager.java

فالمجلد java  كاين dossier models فيه غادي تزيد ملف جديد عبارة عن class java سميه SessionManager فهاد الملف كان خص نزيدو فالجزء الخاص بإضافة إعلان للقائمة المفضلة ونسيت المهم فيه غير des fonctions لي المهمة ديالهم كيزيدو ل id ديال المستخدم ف SharedPreference ولي كنخدمو به ملي المستخدم كيزيد شي إعلان فالقائمة المفضلة فيلا رجعتي للملف AdDetails.java غادي تلقانا خدمنا ب SessionManager فل fonction getUserId الكود ديال الملف هو : 

                                    package com.example.belasri.hiresell;

import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;

import java.util.UUID;

import helpers.BottomNavigationViewHelper;
import models.AdInfo;
import models.DataBaseHandler;
import models.SessionManager;

import static android.R.attr.category;
import static android.icu.lang.UCharacter.GraphemeClusterBreak.L;
import static com.example.belasri.hiresell.R.id.adtitle;

public class AdDetails extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener{
    private TextView adTitleText,adBodyText,adCityText,adUserFullname,adCatText;
    private ImageView userProfileImage,adImageView;
    private BottomNavigationView bottomNavigationView;
    private FloatingActionButton createAd;
    private BottomNavigationViewHelper bottomNavigationViewHelper;
    private String email;
    private String phone;
    private FirebaseDatabase database;
    private DatabaseReference reference,userRef;
    private FirebaseAuth mAuth;
    private String ad_id = null;
    private SessionManager session;
    private String user_stored;
    private DataBaseHandler dba;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ad_details);
        final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        bottomNavigationView = (BottomNavigationView) findViewById(R.id.AdDetaisBottomNav);
        bottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
        bottomNavigationView.setOnNavigationItemSelectedListener(this);
        adTitleText = (TextView) findViewById(R.id.adTitle);
        adBodyText = (TextView) findViewById(R.id.adDesc);
        adCityText = (TextView) findViewById(R.id.adCity);
        adUserFullname = (TextView) findViewById(R.id.adUserFullname);
        adCatText = (TextView) findViewById(R.id.adCat);
        adImageView = (ImageView) findViewById(R.id.adImage);
        userProfileImage = (ImageView) findViewById(R.id.profileImage);
        ad_id = getIntent().getStringExtra("ad_id");
        reference = FirebaseDatabase.getInstance().getReference().child("Ads");
        userRef = FirebaseDatabase.getInstance().getReference().child("profiles");
        mAuth = FirebaseAuth.getInstance();
        session = new SessionManager(this);
        dba =  new DataBaseHandler(this);
        createAd = (FloatingActionButton) findViewById(R.id.addAdToFav);
        setSupportActionBar(toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getData();
    }

    @Override
    protected void onStart() {
        super.onStart();
        checkIfFavourite();
    }

    @Override
    public void onBackPressed()
    {
        super.onBackPressed();
        finish();
    }
    private void getData(){
        reference.child(ad_id).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                final String adtitle = (String) dataSnapshot.child("title").getValue();
                final String adcity = (String) dataSnapshot.child("city").getValue();
                final String addescription = (String) dataSnapshot.child("description").getValue();
                final String  adimage = (String) dataSnapshot.child("imageUrl").getValue();
                String user_ad_id = (String) dataSnapshot.child("user_id").getValue();
                String category = (String) dataSnapshot.child("category").getValue();
                adCityText.setText(adcity);
                adBodyText.setText(addescription);
                adTitleText.setText(adtitle);
                adCatText.setText(category);
                createAd.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        storeFav(adtitle,addescription,adcity,adimage);
                    }
                });
                setToolbarTitle(adtitle);
                Picasso.with(AdDetails.this).load(adimage).into(adImageView);
                setUserName(user_ad_id);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
    public void setUserName(String userId){
        userRef.child(userId).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String name = (String) dataSnapshot.child("fullname").getValue();
                phone = (String) dataSnapshot.child("phone").getValue();
                email = (String) dataSnapshot.child("email").getValue();
                String image = (String) dataSnapshot.child("image_url").getValue();
                adUserFullname.setText(name);
                if(image != null) {
                    Picasso.with(AdDetails.this).load(image).into(userProfileImage);
                }else{
                    userProfileImage.setImageResource(R.drawable.abc56789);
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
    private  void setToolbarTitle(String title) {
        getSupportActionBar().setTitle(title);
    }

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        int id = item.getItemId();
        switch(id){
            case R.id.callAdUser :
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                if(!phone.equals("")){
                    callIntent.setData(Uri.parse("tel:"+phone));
                    Log.d("useradphone",phone);
                }else{
                    Toast.makeText(this, "Aucun téléphone fournis", Toast.LENGTH_SHORT).show();
                }
                if(ActivityCompat.checkSelfPermission(this,android.Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
                    requestPermission();
                }else{
                    startActivity(callIntent);
                }
                break;
            case R.id.SendSms :
                Uri uri = Uri.parse("smsto:"+phone);
                Intent sendSmsIntent = new Intent(Intent.ACTION_SENDTO, uri);
                sendSmsIntent.putExtra("sms_body", "Sms à envoyer");
                startActivity(sendSmsIntent);
                break;
            case R.id.SendEmail :
                Intent sendEmail = new Intent(Intent.ACTION_SEND);
                sendEmail.setData(Uri.parse("email"));
                String[] userEmail = {email};
                sendEmail.putExtra(Intent.EXTRA_EMAIL,userEmail);
                sendEmail.putExtra(Intent.EXTRA_SUBJECT,"le sujet");
                sendEmail.putExtra(Intent.EXTRA_TEXT,"le contenu");
                sendEmail.setType("message/rfc822");
                Intent launchEmail = Intent.createChooser(sendEmail,"Envoyer");
                startActivity(launchEmail);
                break;
        }
        return true;
    }
    private void requestPermission(){
        ActivityCompat.requestPermissions(this,new String[]{android.Manifest.permission.CALL_PHONE},1);
    }
    private void storeFav(String title,String desc,String city,String image){
        if(!dba.isFavourite(ad_id)){
            dba.addFav(title,desc,city,image,ad_id,getUserId());
            createAd.setImageResource(R.drawable.fav);
            Toast.makeText(this,title +  " ajoutée à vos favoris", Toast.LENGTH_SHORT).show();
            Log.d("favouritestored", dba.getFavs().get(0).getTitle());
        }else{
            dba.deleteFavourite(ad_id);
            createAd.setImageResource(R.drawable.ic_favorite_border_black_24dp);
            Toast.makeText(this,title +  " retirée de vos favoris", Toast.LENGTH_SHORT).show();
        }
    }
    private void checkIfFavourite(){
        if(dba.isFavourite(ad_id)){
            createAd.setImageResource(R.drawable.fav);
        }else{
            createAd.setImageResource(R.drawable.ic_favorite_border_black_24dp);
        }
    }
    private String getUserId(){
        if(mAuth.getCurrentUser() == null){
            String user_id;
            if(session.getData().equals("")){
                user_id = generateRandomUserId();
            }else{
                user_id = session.getData();
            }
            return user_id;
        }else{
            return  mAuth.getCurrentUser().getUid();
        }
    }
    private String generateRandomUserId(){
        String user_id = String.valueOf(UUID.randomUUID());
        return user_id;
    }
}
                                

5- إضافة الملف الخاص بعرض المعلومات الخاصة بالمستخدم

باش نزيد ملف profile المستخدم سير ل dossier java زيد activity جديدة سميها ProfileActivity منبعد سير ل dossier res/layout فيه غادي تلقى الملف activity_profile.xml لي فيه زدنا image view لي كتمكن المستخدم من عرض وتغيير صورة البروفايل ديالو وايضا text views لي كنعرض فيهم المعلومات الخاصة بالمستخدم إضافة ل edit texts لي كيمكنوا من إضافة وتعديل معلومات اخرى خاصة بالمستخدم الكود ديال الملف هو :

                                    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/profileLayout"
    tools:context="com.example.belasri.hiresell.ProfileActivity"
    >
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <ImageView
                android:id="@+id/cover_image"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:scaleType="centerCrop"
                android:src="@drawable/header" />
            <de.hdodenhof.circleimageview.CircleImageView
                android:id="@+id/profile_image_btn"
                android:layout_width="130dp"
                android:layout_height="130dp"
                android:layout_below="@+id/cover_image"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="-60dp"
                android:onClick="uploadProfileImage"
                android:background="@drawable/profile_image_border"
                android:elevation="5dp"
                android:padding="20dp"
                android:scaleType="centerCrop"
                android:tag="profileDefaultImage"
                android:src="@drawable/abc56789" />

            <RelativeLayout
                android:id="@+id/profile_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/cover_image"
                android:background="@color/colorPrimary"
                android:elevation="4dp"
                android:paddingBottom="24dp">
                <TextView
                    android:id="@+id/user_profile_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="76dp"
                    android:textColor="#fff"
                    android:textSize="24sp"
                    android:textStyle="bold" />
                <TextView
                    android:id="@+id/user_profile_email"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/user_profile_name"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="12dp"
                    android:textColor="#fff"
                    android:textSize="14sp" />
                <TextView
                    android:id="@+id/user_profile_txtphone"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/user_profile_email"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="12dp"
                    android:textColor="#fff"
                    android:textSize="14sp" />
            </RelativeLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/profile_layout"
                android:layout_marginTop="5dp"
                android:orientation="vertical">
                <android.support.design.widget.TextInputLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/text_fullname_layout"
                    android:layout_marginTop="50dp"
                    android:layout_marginLeft="32dp"
                    android:layout_marginBottom="8dp"
                    android:layout_marginRight="32dp"
                    >
                    <android.support.v7.widget.AppCompatEditText
                        android:id="@+id/user_profile_fullname"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_margin="16dp"
                        android:inputType="text"
                        android:hint="@string/full_name"
                        />
                </android.support.design.widget.TextInputLayout>
                <android.support.design.widget.TextInputLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/text_phone_layout"
                    android:textAlignment="center"
                    android:layout_marginLeft="32dp"
                    android:layout_marginBottom="8dp"
                    android:layout_marginRight="32dp"
                    >
                    <android.support.v7.widget.AppCompatEditText
                        android:id="@+id/user_profile_phone"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_margin="16dp"
                        android:inputType="phone"
                        android:hint="@string/phone"
                        />
                </android.support.design.widget.TextInputLayout>
                <android.support.v7.widget.AppCompatButton
                    android:id="@+id/btn"
                    style="?android:textAppearanceMedium"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="16dp"
                    android:background="@color/white"
                    android:onClick="addUserInfo"
                    android:text="@string/update_user"
                    android:textColor="@color/colorPrimary"
                    android:textSize="20dp"
                    android:textStyle="bold" />
            </LinearLayout>
        </RelativeLayout>
    </ScrollView>
</RelativeLayout>
                                


بحث في الموقع


إشترك للتوصل بالجديد