آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

دکمه بزرگنمایی zoom

ho_ghorbani  10 سال پیش  10 سال پیش
0 0

سلام

من می خوام یه دکمه بزرگ نمایی برای متن ها بذارم تا  کاربر به دلخواه خودش متن رو تا یک سایزی بزرگ یا کوچیک کنه؟

فبلا از دوستانی که جواب مب دن تشکر می کنم.

0 0
یا از وب ویو استفاده کن یا قابلیت تغیر اندازه فونت رو بزار تو برنامت که هر دوتا کار های ساده ای هستند (10 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
CreativeBoy  10 سال پیش
+3 0

سلام

میتونی طبق آموزش های custom control برای خودت یک کنترل سفارشی بسازی ولی فعلا این کدها میتونه کمکت کنه:

کدهای مربوط به اکتیویتی:

final TextView txt1 = (TextView) findViewById(R.id.txt1);
SeekBar seekBar1 = (SeekBar) findViewById(R.id.seekBar1);

seekBar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {}


    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {}


    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(txt1.getTextSize() < 10){
txt1.setTextSize(10 / 1.5f);
}

/**
* progress * 1.33 for ldpi - progress * 1 for mdpi
* progress / 1.5 for hdpi - progress / 2 for xhdpi
*/
txt1.setTextSize(progress / 1.5f); txt1.setText("text size is : " + txt1.getTextSize()); } });

کدهای XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/txt1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginBottom="8dip"
        android:layout_marginTop="8dip"
        android:text="There is some text" />



    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="4dip" />

</LinearLayout>

 

0 0
دوست گلم CreativeBoy ممنون اما چطوری میشه محدود کنم بزرگنمایی رو (10 سال پیش)
0 0
مقدار progress بین 1-100 اگه اشتباه نکنم. حالا شما با یه نسبت ساده اینو به هر اندازه ای که میخوای تبدیل کن و بعد ست کن (10 سال پیش)
0 0
البته با متد setMax میشه حداکثرش رومشخص کرد (10 سال پیش)
0 0
آره این راه بهتره ممنون :) (10 سال پیش)
0 0
اقا setMax واس حداکثر،واس حداقل چیه؟! (10 سال پیش)
0 0
progress رو با عدد حداقل جمع کن (10 سال پیش)
0 0
نگرفتم!اگه میشه بیشتر روشنگری کن! (10 سال پیش)
0 0
پاسخ ویرایش شد. مقدار progress بین 0 تا 100 هست. (10 سال پیش)
0 0
یادم رفت بگم، توجه کنید که progress رو اگر همین طوری خام بذاریم واسه textSize بر حسب dip محاسبه میشه که کمی بزرگتر از px هست، پس اگر قصد داشته باشید که textSize برحسب px نمایش داده بشه باید به 1.5 تقسیم بشه. به این لینک هم یک نگاه بندازید. (10 سال پیش)
0 0
صادق که افلاین شد!CreativeBoy شما بگید واس دادن حداقل به progress چکار کنم؟!وا اندازه فونت برنامه لازم دارم تا نشه فونت رو کوچیکتر از 10 کرد (10 سال پیش)
0 0
Mir Unknown عزیز، پاسخ باز هم ویرایش شد، فکر کنم الان جوابتونو بگیرید. یک شرط گذاشتم که اگه فونت کوچکتر از 10 شد باز سایز فونت همون 10 بمونه. (10 سال پیش)
0 0
فکر میکردم واس حداقل هم متد هستش،خودمم همین کارو انجام دادم (10 سال پیش)
0 0
این راهم خوبه ولی منظور من این بود که مثلا میخوایم فونت بین 10-30 باشه . خب max رو میذاریم رو 20 بعد هرعددی که کاربر انتخاب کرد با حداقل که همون 10 جمع میکنیم. اینجوری همیشه عدد بین 10-30 میشه ;) (10 سال پیش)
0 0
یعنی کاربر اگه انتخاب کرد 5 میشه 15؟! راهی نیست ک خود seekbar پاینترینش 10 باشه؟ک نیاز به شرط و جمع نباشه؟مثل همون متد max؟ (10 سال پیش)
0 0
صادق منم اول همین راهی که گفتی به ذهنم خورد ولی چون عجله داشتم همینطور جواب دادم، راهی که گفتی بهتر و اصولی تره (10 سال پیش)
0 0
@Mir Unknown : من راهی سراغ ندارم.به قول CteativeBoy این بهترین راهه. راستی ماجرای اون 3 سوالی که تو صفحه پروفایلت گذاشتی چیه؟؟؟ (10 سال پیش)
0 0
دوستان پاسخ باز هم ویرایش شد، :). فراموش کرده بودم که بگم برای densityDpi های مختلف مقدار بر حسب px چطور باید محاسبه بشه (توی دومین comment خودم زیر همین پاسخ منظور hdpi بود. )، الان توی comment ی که برای کدها گذاشتم میتونید توضیحات تکمیلی رو ببینید. (10 سال پیش)
0 0
واس دسترسی راحتر گذاشتم :D (10 سال پیش)
پاسخ به سوال 
Eminent  10 سال پیش
0 0

دوست عزیز من الان امتحان کردم دستتون درد نکنه خوب گفتید اما منم مشکل دارم اینکه با تابع setMax سایز کران بالا رو میدیم اما مثلا من دوست دارم متن فقط حداقل سایز کران پایین 10 رو داشته باشه که نمیشه با یه شرط تا حدودی حل میکنمش مثلا به متن مقدار اولیه کران پایین رو میدم اما وقتی نوار لغزنده رو تا تکون میدم برای یه لحظه متن بسیار کوچیک میشه ک اعصابمو ریخته بهم من sample رو میذارم لطفا کمک کنید. (خلاصه حرفام : حداقل سایز مثلا 20 و حداکثر سایز 80 اما مقدار 20 مقدار 0درصد و سایز 80 مقدار 100 درصد رو برای نوار لغزنده داشته باشه ممنون)

 package ir.pourmasih.app.zoom;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;


public class ZoomActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final TextView txt = (TextView) findViewById(R.id.txt);
        final SeekBar skb = (SeekBar) findViewById(R.id.skb);

        skb.setMax(80);

        skb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar arg0) {}


            @Override
            public void onStartTrackingTouch(SeekBar arg0) {}


            @Override
            public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
                txt.setTextSize(80); //set text defualt size
                float s = txt.getTextSize();
                if (s >= 20 || s <= 80) { // low limite and hight limite

                    txt.setTextSize(arg1); // arg1 is progress

                    //  txt.setTextSize(txt.getTextSize());
                    //  txt.setTextSize(50 / 1.5f);
                }
            }
        });
    }
}
0 0
جلال خالق (باز نمیدونم از نظر املایی درست نوشتم یا نه). من همیشه فکر میکردم بچه چطور سورس رو میزارن عین سورس خود جاوا همیشه عکس میزاشتم و خوشم نمیومد الان امتحان کردم. خیلی خوشم اومد. من به استاد ایمان راسخ آوردم. در ضمن دوستان منتظر راهنماییتون هستم... (10 سال پیش)
0 0
نظرات بالا رو بخون راه بهتر رو میبینی (10 سال پیش)
0 0
عزیز واقعا بابت جوابت ممنون. یعنی واقعا به نظرتون نظرات دوستان رو نخوندم که دوباره کد رو زدم و فرستادم ؟ و یا متوجه شدم و همینجوری خواسته باشم چیزی بگم!!! دوست عزیز خواهشا سوال منو یه بار دیگه بخونید و نظرات و ج دوستان رو ببینید که خودتون هم توش هستید. اگه منظورمو متوجه شدید ممنون میشم راهنمایی کنید اگه ندوستید که دیگه ارزی ندارم. تشکر (10 سال پیش)
پاسخ به سوال 
sadeghbarout  10 سال پیش
+2 0

خب گفتم شاید نخوندی!

اول setMax رو به جای 80 بکن 60

بعد کدهای onProgressChanged رو اینجوری بذار:

  @Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
txt.setTextSize(arg1+20);

}

همین! (حالا واقعا تو کامنتای بالا این معلوم نبود؟ )

0 0
حل شد مرسی. نه معلوم نبود. ولی الان دقیقا درک کردم که جریان چیه! ممنون. (10 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .