تطبيق إعلانات بأندرويد و firebase الجزء الثالت
فهاد الجزء الثالت من تطبيق إعلانات بأندرويد و firebase غادي نكملو الملفات ديالنا فدبا غادي نزيدو الملفات لي غادي يمكنوا المستخدم باش يتسجل فالتطبيق ديالنا من بعد يمكنلو يتكونيكطا باش منبعد يمكنلو يزيد إعلانات ديالو وهنا غادي نخدمو ب firebase كقاعدة بيانات يلا مكنتيش كتعرف firebase شوف الدروس السابقة.
نظرة سريعة بالفيديو
1- إضافة فورم التسجيل
فباش نزيد ل formulaire لي غادي تمكن المستخدم من التسجيل كنمشي ل dossier java وكنزيد activity جديدة سميها RegisterActivity منبعد متزاد غادي تمشي ل dossier res/layout فيه غادي تلقى ملف تزاد سميتو activity_register.xml فيه غادي نزيدو لفورم ديالنا فعندي les champs فين غادي يدخل المستخدم المعلومات الخاصة به وكل champ عندو خاص id به باش غادي نسترجعوا فالملف RegisterActivity منبعد ثم عندي TextInputLayout لي كيمكنوني باش ن afficher les erreurs de validation منبعد عندي ل bouton لي ملي كنكليكي عليه كتنفد ل fonction registerNewUser لي غادي تمكن من إضافة المستخدم لقاعدة البيانات ثم عندي TextView لي ملي كنكليكي عليها كتديني للملف ديال ل connexion يلا كان المستخدم déjà inscrit منبعد عندي snackbar لي بحال Toast لي فقط كيت afficha فيه les messages de confirmations الكود ديال الملف هو :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:id="@+id/registerLayout"
tools:context="com.example.belasri.hiresell.RegisterActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/toolbar"></include>
</RelativeLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="55dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:padding="10dp"
android:elevation="5dp"
android:layout_marginBottom="20dp"
android:background="@color/white"
android:layout_centerInParent="true"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:text="@string/Register"
android:textColor="@color/colorPrimary"
android:fontFamily="sans-serif"
android:textSize="30sp"
android:padding="10dp"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/colorPrimaryDark"></View>
<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/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_email_layout"
android:textAlignment="center"
android:layout_marginLeft="32dp"
android:layout_marginBottom="8dp"
android:layout_marginRight="32dp"
>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:inputType="textEmailAddress"
android:hint="@string/email"
/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_password_layout"
android:layout_below="@+id/text_email_layout"
android:layout_marginLeft="32dp"
android:layout_marginBottom="8dp"
android:layout_marginRight="32dp"
app:passwordToggleEnabled="true"
app:counterOverflowTextAppearance="@style/textErrorColor"
>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:inputType="textPassword"
android:hint="@string/password"
/>
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/btn"
android:text="@string/register"
android:textAllCaps="false"
android:textColor="@color/white"
android:onClick="registerNewUser"
android:textSize="20dp"
android:layout_marginTop="20dp"
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/link_signup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="24dp"
android:text="Déjà inscrit"
android:textColor="@color/colorPrimary"
android:gravity="center"
android:textSize="16sp"/>
</LinearLayout>
</ScrollView>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/snackbar"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
2- إضافة المستخدم الجديد لقاعدة البيانات ف firebase
فباش نزيد المستخدم ديالي لقاعدة البيانات كنمشي ل dossier java فيه كاين الملف RegisterActivity فيه غادي نزيد الكود لي غادي يمكني باش أولا باش نسترجع les champs ديالي و les boutons وles TextInputLayout منبعد كنخدم ب FirebaseAuth لي كتمكني باش نزيد مستخدم بالإيمايل ديالو فالجدول ديال المستخدمين فباش ن activer هاد ال mode ديال ل connexion كنمشي ل Authentication من بعد Mode de connexion فكنختار email et mot de passe و كن activer ل mode منبعد عندي DatabaseReference لي كنزيد بها جدول سميتو profiles فيها غادي نزيد المعلومات ديال المستخدم منبعد كاين TextView لي كنسترجعها بل id ديالها وكنزيد ل fonction goToRegister لي كتمكن المستخدم ملي يكليكي عليها يمشي للملف ديال الكونيكسيون ولي غادي نزيدوه منبعد ثم ل fonction checkField لي كنسترجع بها القيم لي دخل المستخدم فالحقول وكنتحقق بلي حتى حقل ما خاوي ثم كاين ل fonction addUser لي منبعد مكينجح التحقق كنزيدهم فقاعدة البيانات وكنتحقق يلا تمت الإضافة كنعرض رسالة نجاح وكنوجه المستخدم للملف الخاص بل connexion الكود ديال الملف هو:
package com.example.belasri.hiresell;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatEditText;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.WindowManager;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.UserInfo;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class RegisterActivity extends AppCompatActivity {
AppCompatEditText fullName,Email,Password;
private Toolbar toolbar;
private FirebaseAuth mAuth;
private TextInputLayout fullnameLayout,emailLayout,passwordLayout;
private DatabaseReference db;
private ProgressBar progressBar;
private RelativeLayout layout;
private TextView registerText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
toolbar = (Toolbar) findViewById(R.id.toolbar);
layout = (RelativeLayout) findViewById(R.id.registerLayout);
progressBar = new ProgressBar(RegisterActivity.this,null,android.R.attr.progressBarStyleLarge);
fullName = (AppCompatEditText) findViewById(R.id.fullname);
Email = (AppCompatEditText) findViewById(R.id.email);
Password = (AppCompatEditText) findViewById(R.id.password);
fullnameLayout = (TextInputLayout) findViewById(R.id.text_fullname_layout);
passwordLayout = (TextInputLayout) findViewById(R.id.text_password_layout);
emailLayout = (TextInputLayout) findViewById(R.id.text_email_layout);
mAuth = FirebaseAuth.getInstance();
db = FirebaseDatabase.getInstance().getReference().child("profiles");
setSupportActionBar(toolbar);
registerText = (TextView) findViewById(R.id.link_signup);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
goToRegister();
}
@Override
public void onBackPressed()
{
super.onBackPressed();
finish();
}
public void checkField(){
Boolean cancel = false;
if(fullName.getText().toString().isEmpty()){
fullnameLayout.setErrorEnabled(true);
fullnameLayout.setError("Ce champ est obligatoire");
cancel = true;
}else{
fullnameLayout.setErrorEnabled(false);
cancel = false;
}
if(Password.getText().toString().isEmpty()){
passwordLayout.setErrorEnabled(true);
passwordLayout.setError("Ce champ est obligatoire");
cancel = true;
}else{
passwordLayout.setErrorEnabled(false);
cancel = false;
}
if(Email.getText().toString().isEmpty()){
emailLayout.setErrorEnabled(true);
emailLayout.setError("Ce champ est obligatoire");
cancel = true;
}else{
emailLayout.setErrorEnabled(false);
cancel = false;
}
if(!cancel){
addUser();
}
}
public void registerNewUser(View v){
checkField();
}
public void addUser(){
final CoordinatorLayout coordinatorLayout = (CoordinatorLayout) findViewById(R.id.snackbar);
final String fullname = fullName.getText().toString();
final String email = Email.getText().toString();
String password = Password.getText().toString();
showProgressBar();
mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(this,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
UserInfo user = mAuth.getCurrentUser();
DatabaseReference current_user_profile = db.child(user.getUid());
current_user_profile.child("user_id").setValue(user.getUid());
current_user_profile.child("fullname").setValue(fullname);
progressBar.setVisibility(View.GONE);
layout.removeView(progressBar);
Email.setText("");
Password.setText("");
fullName.setText("");
Snackbar snackbar = Snackbar.make(coordinatorLayout, "Compte crée", Snackbar.LENGTH_LONG).setAction("Login", new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent loginIntent = new Intent(RegisterActivity.this,LoginActivity.class);
finish();
startActivity(loginIntent);
}
});
snackbar.show();
}else{
progressBar.setVisibility(View.GONE);
layout.removeView(progressBar);
Toast.makeText(RegisterActivity.this,"Erreur : " + task.getException(), Toast.LENGTH_SHORT).show();
}
}
});
}
private void showProgressBar(){
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar,params);
progressBar.setVisibility(View.VISIBLE); //To show ProgressBar// To Hide ProgressBar
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
private void goToRegister(){
registerText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent registerIntent = new Intent(RegisterActivity.this,LoginActivity.class);
finish();
startActivity(registerIntent);
}
});
}
}
3- إضافة فورم تسجيل الدخول
فباش نزيد ل formulaire لي غادي تمكن المستخدم من ل connexion كنمشي ل dossier java وكنزيد activity جديدة سميها LoginActivity منبعد متزاد غادي تمشي ل dossier res/layout فيه غادي تلقى ملف تزاد سميتو activity_login.xml فيه غادي نزيدو لفورم ديالنا فعندي les champs فين غادي يدخل المستخدم ل email ول mot de passe وكل champ عندو id خاص به باش غادي نسترجعوا فالملف LoginActivity منبعد ثم عندي TextInputLayout لي كيمكنوني باش ن afficher les erreurs de validation منبعد عندي ل bouton لي ملي كنكليكي عليه كتنفد ل fonction logUser لي غادي تمكن من تسجيل دخول المستخدم ثم عندي TextView لي ملي كنكليكي عليها كتديني للملف ديال ل inscription يلا مكانش المستخدم déjà inscrit منبعد عندي snackbar لي بحال Toast لي فقط كيت afficha فيه les messages de confirmations الكود ديال الملف هو :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/loginLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context="com.example.belasri.hiresell.LoginActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/relativeLayout">
<include layout="@layout/toolbar"></include>
</RelativeLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/relativeLayout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<LinearLayout
android:orientation="vertical"
android:background="@color/white"
android:layout_marginBottom="20dp"
android:padding="10dp"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:text="@string/login"
android:textColor="@color/colorPrimary"
android:fontFamily="sans-serif"
android:textSize="30sp"
android:padding="10dp"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/colorPrimaryDark"></View>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_email_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/pseudo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:inputType="textEmailAddress"
android:hint="@string/email"
/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_password_layout"
android:layout_below="@+id/text_email_layout"
android:layout_marginLeft="32dp"
android:layout_marginBottom="8dp"
android:layout_marginRight="32dp"
app:passwordToggleEnabled="true"
app:counterOverflowTextAppearance="@style/textErrorColor"
>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:inputType="textPassword"
android:hint="@string/password"
/>
</android.support.design.widget.TextInputLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/btn"
android:text="@string/login_text"
android:textColor="@color/white"
android:textSize="20dp"
android:onClick="logUser"
android:layout_marginTop="20dp"
android:textAllCaps="false"
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/link_signup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/colorPrimary"
android:layout_marginTop="20dp"
android:layout_marginBottom="24dp"
android:text="Nouveau utilisateur inscrivez vous."
android:gravity="center"
android:textSize="16sp"/>
</LinearLayout>
</ScrollView>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/snackbar"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
4- تسجيل دخول المستخدم ب firebase auth
فالمجلد java كاين LoginActivity.java لي هو الملف الي فيه الكود لي كيمكن المستخدم باش يتكونيكطا فأول حاجة كنسترجع les champs من الملف activity_login.xml من بعد كاين ل fonction goToLogin ولي كتدي المستخدم للملف الخاص بالتسجيل يلا مكانش عندو حساب ولي كتنفد ملي كيضغط على TextView لي زدنا ثم كاين fonction checkField لي كنسترجع بها القيم لي دخل المستخدم فالحقول وكنتحقق بلي حتى حقل ما خاوي ثم كاين ل fonction logUser كتنفد ملي كيضغط المستخدم على connexion لي منبعد مكينجح التحقق فكنخدم بل FirebaseAuth باش كنكونيكطي المستخدم بالإمايل ديالو وال mot de passe ولي يلا نجحت الكونيكسيون كنوجهوه للصفحة الرئيسية لي فيها الإعلانات معروضين الكود ديال الملف هو :
package com.example.belasri.hiresell;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.annotation.NonNull;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatEditText;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.WindowManager;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import org.w3c.dom.Text;
public class LoginActivity extends AppCompatActivity {
private Toolbar toolbar;
private AppCompatEditText Email,Password;
private TextInputLayout emailLayout,passwordLayout;
private FirebaseAuth mAuth;
private ProgressBar progressBar;
private RelativeLayout layout;
private TextView loginText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
layout = (RelativeLayout) findViewById(R.id.loginLayout);
progressBar = new ProgressBar(LoginActivity.this,null,android.R.attr.progressBarStyleLarge);
Email = (AppCompatEditText) findViewById(R.id.pseudo);
Password = (AppCompatEditText) findViewById(R.id.password);
loginText = (TextView) findViewById(R.id.link_signup);
emailLayout = (TextInputLayout) findViewById(R.id.text_email_layout);
passwordLayout = (TextInputLayout) findViewById(R.id.text_password_layout);
mAuth = FirebaseAuth.getInstance();
goToLogin();
}
@Override
public void onBackPressed()
{
super.onBackPressed();
finish();
}
public Boolean checkField(){
Boolean valid = true;
if(Email.getText().toString().isEmpty()){
emailLayout.setErrorEnabled(true);
emailLayout.setError("Ce champ est obligatoire");
valid = false;
}else{
emailLayout.setErrorEnabled(false);
}
if(Password.getText().toString().isEmpty()){
passwordLayout.setErrorEnabled(true);
passwordLayout.setError("Ce champ est obligatoire");
valid = false;
}else{
passwordLayout.setErrorEnabled(false);
}
return valid;
}
public void logUser(View view) {
if(checkField()){
authUser();
}
}
private void authUser() {
final CoordinatorLayout coordinatorLayout = (CoordinatorLayout) findViewById(R.id.snackbar);
String email = Email.getText().toString();
String passord = Password.getText().toString();
showProgressBar();
mAuth.signInWithEmailAndPassword(email,passord).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
progressBar.setVisibility(View.GONE);
layout.removeView(progressBar);
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
Snackbar snackbar = Snackbar.make(coordinatorLayout, "Connecté", Snackbar.LENGTH_LONG);
snackbar.show();
}
},2000);
Intent loginIntent = new Intent(LoginActivity.this,MainActivity.class);
finish();
startActivity(loginIntent);
}else{
progressBar.setVisibility(View.GONE);
layout.removeView(progressBar);
Toast.makeText(LoginActivity.this,"Email ou mot de passe est incorrect", Toast.LENGTH_SHORT).show();
}
}
});
}
private void showProgressBar(){
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(progressBar,params);
progressBar.setVisibility(View.VISIBLE); //To show ProgressBar// To Hide ProgressBar
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
private void goToLogin(){
loginText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent registerIntent = new Intent(LoginActivity.this,RegisterActivity.class);
finish();
startActivity(registerIntent);
}
});
}
}
5- إضافة الملف الخاص بإضافة الإعلانات
فباش نزيد ل formulaire لي غادي تمكن المستخدم من إضافة إعلان كنمشي ل dossier java وكنزيد activity جديدة سميها CreateAds منبعد متزاد غادي تمشي ل dossier res/layout فيه غادي تلقى ملف تزاد سميتو create_ads.xml فيه غادي نزيدو لفورم ديالنا فعندي les champs فين غادي يدخل المستخدم المعلومات الخاصة بالإعلان وكل champ عندو id خاص به باش غادي نسترجعوا فالملف CreateAds منبعد ثم عندي TextInputLayout لي كيمكنوني باش ن afficher les erreurs de validation منبعد عندي ل bouton لي ملي كنكليكي عليه كتنفد ل fonction createNewAd لي غادي تمكن من إضافة الإعلان فقاعدة البيانات الكود ديال الملف هو :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context="com.example.belasri.hiresell.CreateAds">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/toolbar"></include>
</RelativeLayout>
<ScrollView
android:layout_marginTop="55dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:padding="10dp"
android:elevation="5dp"
android:background="@color/white"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<TextView
android:id="@+id/title"
android:text="@string/post_ad"
android:textColor="@color/colorPrimary"
android:fontFamily="sans-serif"
android:textSize="30sp"
android:padding="10dp"
android:textAlignment="center"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/colorPrimaryDark"></View>
<android.support.design.widget.TextInputLayout
android:id="@+id/text_category_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="32dp"
android:layout_marginRight="32dp"
android:layout_marginTop="50dp">
<Spinner
android:id="@+id/categorieSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_city_layout"
android:layout_marginLeft="32dp"
android:layout_marginBottom="8dp"
android:layout_marginRight="32dp"
>
<Spinner
android:layout_margin="16dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/citySpinner" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_title_layout"
android:layout_marginLeft="32dp"
android:layout_marginBottom="8dp"
android:layout_marginRight="32dp"
>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/adtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:inputType="text"
android:hint="@string/title"
/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_body_layout"
android:layout_below="@+id/text_title_layout"
android:layout_marginLeft="32dp"
android:layout_marginBottom="8dp"
android:layout_marginRight="32dp"
android:inputType="textMultiLine"
app:passwordToggleEnabled="true"
app:counterOverflowTextAppearance="@style/textErrorColor"
>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/adbody"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:ems="10"
android:inputType="textMultiLine"
android:hint="@string/description"
/>
</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:layout_below="@+id/text_body_layout"
android:layout_marginLeft="32dp"
android:layout_marginBottom="8dp"
android:layout_marginRight="32dp"
app:passwordToggleEnabled="true"
app:counterOverflowTextAppearance="@style/textErrorColor"
>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/userTel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:ems="10"
android:inputType="number"
android:hint="Tél"
/>
</android.support.design.widget.TextInputLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp">
<ImageButton
android:id="@+id/image_uploaded"
android:background="@color/white"
android:layout_width="match_parent"
android:src="@drawable/ic_camera"
android:onClick="uploadAdImage"
android:layout_height="150dp"
android:padding="10dp"
android:layout_marginBottom="24dp"
android:layout_gravity="center_horizontal" />
</LinearLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/btn"
android:text="@string/add_add"
android:textColor="@color/white"
android:onClick="createNewAd"
android:textSize="20dp"
android:textAllCaps="false"
android:layout_marginTop="20dp"
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
</RelativeLayout>