آموزش تنظیم EditText زیر کیبورد در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش تنظیم EditText زیر کیبورد در برنامه نویسی اندروید می پردازیم اگر دقت کرده باشید زمانی که بروی EditText کلیک می کنید اگر EdiText در جایی باشد که کیبور از آن سطح بالاتری داشته باشد به طور مثال شما یک EditText را در پایین بخش Layout یا بالاترین بخش Layout قرار می دهید اگر دحالت پایین باشد کیبور که نمایش پیدا کند بروی EditText می اتفد و اگر بالاتر هم باشد کیبور فاصله ی زیادی با EditText دارد برای اینکه EditText رو fix با KeyBoard قرار دهیم باید از یک ویژگی خاص استفاده کنیم در ادامه با ما همراه باشید.

برای افردای پیشرفته فقط کافی است کد زیر را در بخش اکتیویتی خودتان قرار دهید.
android:windowSoftInputMode="stateVisible|adjustPan"
در صورتی که متوجه آن نشدید ادامه آموزش را مشاهده کنید
وارد فایل activity_main.xml شده و یک EditText در آن قرار دهید همانند زیر
<RelativeLayout 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" tools:.MainActivity" > <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="126dp" android:ems="10" android:hint="This is EditText" android:gravity="center" > </EditText> </RelativeLayout>
تنها یک EdiText معمولی قرار داده ایم سپس وارد فایل AndroidManifest.xml شده و بخش اکتیویی مربوط به آن EditText را همانند زیر کنید.
<activity android:name=".MainActivity" android:windowSoftInputMode="stateVisible|adjustPan" . . .
در بخش MainActivity.java هم چیزی نیاز نیست .
package ir.programchi;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
کد کامل AndroidManifest.xml برای دوستانی که متوجه نشدند.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ir.programchi" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:windowSoftInputMode="stateVisible|adjustPan" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
این آموزش هم به پایان رسید.
موفق و موید باشید.
آموزش برنامه نویسی اندروید |
سلام چه طور میتونم درون همین edit text (و text view) وقتی کاربر عدد وارد کرد , اعداد ۳ رقم ۳ رقم با کاما از هم جداشن???
اگر می خواهید اعداد رو سه رقم سه رقم با کاما جدا کنید خط زیر را به EditText اضافه کنید.
موفق باشید.
اینجوری که فقط قابلیت پذیرش اعداد اعشاری برا ادیت تکست فعال میشه.همین
یک کلاس به نام NumberTextWatcherForThousand.java ایجاد کنید و کد زیر را در آن قرار دهید.
import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import java.util.StringTokenizer; /** * Created by skb on 12/14/2015. */ public class NumberTextWatcherForThousand implements TextWatcher { EditText editText; public NumberTextWatcherForThousand(EditText editText) { this.editText = editText; } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { try { editText.removeTextChangedListener(this); String value = editText.getText().toString(); if (value != null && !value.equals("")) { if(value.startsWith(".")){ editText.setText("0."); } if(value.startsWith("0") && !value.startsWith("0.")){ editText.setText(""); } String str = editText.getText().toString().replaceAll(",", ""); if (!value.equals("")) editText.setText(getDecimalFormattedString(str)); editText.setSelection(editText.getText().toString().length()); } editText.addTextChangedListener(this); return; } catch (Exception ex) { ex.printStackTrace(); editText.addTextChangedListener(this); } } public static String getDecimalFormattedString(String value) { StringTokenizer lst = new StringTokenizer(value, "."); String str1 = value; String str2 = ""; if (lst.countTokens() > 1) { str1 = lst.nextToken(); str2 = lst.nextToken(); } String str3 = ""; int i = 0; int j = -1 + str1.length(); if (str1.charAt( -1 + str1.length()) == '.') { j--; str3 = "."; } for (int k = j;; k--) { if (k < 0) { if (str2.length() > 0) str3 = str3 + "." + str2; return str3; } if (i == 3) { str3 = "," + str3; i = 0; } str3 = str1.charAt(k) + str3; i++; } } public static String trimCommaOfString(String string) { // String returnString; if(string.contains(",")){ return string.replace(",","");} else { return string; } } }حالا این کد رو برای EditText قرار دهید.
موفق باشید.
سلام
من میخوام زمانی که برنامه باز میشه کیبورد باز شه
سلام
چه کدی را در اندروید استدیو وارد کنم تا زمانی که روی ادیت تکس کلیک کردم کیبورد باز نشود یعنی یه کدی باشه که کلا کیبورد باز نشه؟