Android: работещо изображение в текст за редактиране

Искам да имам изображение вътре в текст за редактиране, което ще промени възможността за рисуване с анимация, докато потребителят въвежда, както следва:

въведете описание на изображението тук

въведете описание на изображението тук

Благодаря :)


person Daniel Mendel    schedule 26.12.2012    source източник
comment
вероятно дубликат stackoverflow.com/questions/3705809/   -  person mjosh    schedule 26.12.2012


Отговори (3)


просто трябва да зададете CompoundDrawables {Right | Ляво | Най-горе | Bottom} свойството в xml

<EditText 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/searchedTxt"
        android:width="200dp"
        android:layout_alignParentRight="true"
        android:drawableLeftt="@android:drawable/ic_menu_search"/> 
person K_Anas    schedule 26.12.2012
comment
Да, това разбрах сам, но искам също да се промени, когато потребителят въведе текст в текста за редактиране... - person Daniel Mendel; 26.12.2012

моля, използвайте xml кодовия фрагмент, даден по-долу, като част от вашия основен xml файл (отговорен за потребителския интерфейс):

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget665"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="left"
    android:paddingLeft="1dip"
    android:paddingRight="2dip">
        <ImageView
            android:id="@+id/searchImageView"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:src="@android:drawable/ic_search_category_default"
            android:layout_gravity="center_vertical"
            android:paddingTop="2dip"
            android:paddingBottom="2dip">
        </ImageView>
            <EditText
            android:id="@+id/search_edit_text"
            android:layout_width="fill_parent"
            android:layout_height="35dip"
            android:text=""
            android:textSize="18sp"
            android:background="#f5f5dc"
            android:layout_gravity="center_vertical">
        </EditText>
</LinearLayout>

поставете този вътрешен клас в основната си дейност

public class SearchTextWatcher implements TextWatcher{

    @Override
    public void afterTextChanged(Editable arg0) {

    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {

    }

    @Override
    public void onTextChanged(CharSequence prefix, int start, int before, int count) {



                if(!prefix.equals("")){
                    changeImageToProcessing();
                }else{
                    changeImageToIdle();
                }




    }

}

извлечете searchBar (EditText) и iv (ImageView) от вашия contentView по време на onCreate(), нещо като

searchBar = (EditText)contentView.findViewById(R.id.customer_search_edit_text);
iv = (ImageView)contentView.findViewById(R.id.searchImageView);

прикачете текст changelistenber към лентата за търсене edittext

    searchBar.addTextChangedListener(searchTextWatcher);

добавете няколко помощни метода, които ще отговарят за съответната промяна на изображението

    public void changeImageToProcessing(){

        iv.setImageResource(resId);// resid is the id of the working image
    }

public void changeImageToIdle(){


    iv.setImageResource(resId);// resid is the id of the idle image
}

//тези методи се извикват от onTextChange() в класа SearchTextWatcher

person stack_ved    schedule 26.12.2012

Поставете EditText и ImageView в RelativeLayout и когато промените текста, променете изображението

РЕДАКТИРАНЕ: добавен примерен код

1) main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
    <EditText
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:text="New EditText"
            android:id="@+id/editText"/>
    <ImageView
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:id="@+id/imageView"
            android:background="@drawable/first_image"
            />
</RelativeLayout>

2) клас MyActivity

public class MyActivity extends Activity {

    private EditText editText;
    private ImageView image;
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        initializeFormViews();
        initializeFormEvents();
    }

    public void initializeFormViews(){
        editText = (EditText) findViewById(R.id.editText);
        image = (ImageView) findViewById(R.id.imageView);
    }

    public void initializeFormEvents(){

        editText.addTextChangedListener(new TextWatcher() {
            @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) {
                // changes image after editing text in EditText
                image.setBackgroundResource(R.drawable.second_image);
            }
        });

    }
}
person Veaceslav Gaidarji    schedule 26.12.2012
comment
друг начин за използване на изображение drawableLeft и промяна на това свойство на друго изображение, когато редактирате текст - person Veaceslav Gaidarji; 26.12.2012
comment
бихте ли добавили пример?, този метод ми звучи по-чисто - person Daniel Mendel; 26.12.2012
comment
Благодаря, но вместо това използвах animationdrawable, за да направя анимация кадър по кадър и добавих изображението отстрани на текста за редактиране вместо вътре в него. - person Daniel Mendel; 28.12.2012