powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Наложение изображений в кнопках
25 сообщений из 92, страница 3 из 4
Наложение изображений в кнопках
    #38810902
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы лучше понять, как посчитать, хотелось бы знать высоту кнопку и высоту шрифта.
Пишу просто:
Код: java
1.
btn1.setText(Integer.toString(btn1.getHeight()) + "/ " + Float.toString(btn1.getTextSize()));


Но getHeight дает 0 почему-то.
А может есть и проще спобы пофиксить относительное положение текста на кнопке независимо от того как кнопка растягивается и на каком разрешении экрана работает.
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38810921
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрокнопкиНо getHeight дает 0 почему-то.
Нужно знать, где вызывать: после создания всех вьюх, дернуть measure главной вьюхи (активити или фрагмент) и только тогда спрашивать размеры.
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38810930
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanНужно знать, где вызывать: после создания всех вьюх, дернуть measure главной вьюхи (активити или фрагмент) и только тогда спрашивать размеры.
Вызываю в onCreate активити.
Что за метод measure пока не понял.
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38810962
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38810975
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman , спасибо большое, получилось.
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38811073
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще какая-то непонятка:
1. в onCreate активити вызываю measure кнопки.
Код: java
1.
btn1.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);


2. выставляю размер текста кнопки в процентном соотношении к высоте кнопки через setTextSize
типа:
Код: java
1.
btn1.setTextSize((int) (btn1.getMeasuredHeight()*0.25));


При этом текст кнопки становится огромным больше самой кнопки
3. Если же посмотреть что получается по цифрам:
Код: java
1.
btn1.setText(Integer.toString((int) btn1.getTextSize())+"/ "+Integer.toString((int) (btn1.getMeasuredHeight()*0.25)));


Выводит на кнопку 231/ 77
То есть в setTextSize выставляется 231, хотя по соотношению должно получиться 77. Как таг? )

Есть подозрение, что например setTextSize выставляет размер шрифта в одних единицах изм., а getTextSize выдает размер в других единицах. То есть в getTextSize выставили 77, а в getTextSize получим уже большую цифру. (и это подтверждается на практике, тупо забил 77 в setTextSize а getTextSize возвращает 231).

Вопрос , как бы задать размер шрифта, чтобы он соотносился с высотой кнопки? Например, 40% от текущей высоты кнопки? )
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38811214
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
setTextSize выставляет значение в sp unit
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38811217
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предвидя твой следующий вопрос, да решение есть.

Код: sql
1.
2.
3.
 float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
 int  size =   (btn1.getMeasuredHeight()*0.25)/scaledDensity;
btn1.setTextSize(size );
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38811643
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс , спасибо, теперь все получилось до конца.
Вот только сам код....
Пишу типа:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        btn1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    // кусок кода, форматирующий надпись на кнопке
                    ...
                } else if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    // точно такой же кусок кода, но со смещением
                    ...
                }
                return false;
            }
        });


То есть код дублируется и по-хорошему, создать бы отдельный метод внутри этого метода и вызвать его, давая на вход кнопку и смещение для надписи, но как в Java создавать методы внутри методов, если такое возможно, наверно надо создать отдельный класс, в нем нужные методы и их вызывать, это буду читать про джаву )
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38811905
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
   btn1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    // кусок кода, форматирующий надпись на кнопке
                    my_super_method(0);
                } else if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    // точно такой же кусок кода, но со смещением
                    my_super_method(2);
                }
                return false;
            }

            private void my_super_method(int offset) 
            {
                  ....
             } 
        });
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38812020
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибс , да. Это оказалось довольно просто. Спасибо.
Теперь бы создать некий класс активити, в котором переопределить метод onCreate (чтобы в нем по умолчанию форматировались все кнопки, которые есть на активити). И дальше уже в проекте создавать новые активити, наследуя их от этого с переопределенным onCreate, но не динамически в коде создавать конечно, а именно обычным способом.
То есть как не писать этот код в каждой активити да еще для каждой кнопки? )
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38812041
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прокнопки, а принципы ООП слабо использовать? То есть создать наследника кнопки и вставлять его уже в xml?
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38812102
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanТо есть создать наследника кнопки и вставлять его уже в xml?
Начинаю создавать подкласс в отдельном файле:
Код: java
1.
2.
...
public class MyButton extends Button {...


Но не пойму пока как переопределять методы?
То есть каждый метод базового класса Button имеет наверно какие-то свои вх.исх. параметры по умолчанию и при переопределении метода, надо их же упомянуть так? Если так, то как в студии найти некую спецификацию метода класса? Или все как-то проще?
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38812116
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрокнопкиИли все как-то проще?
Нажать Alt+Insert?
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38812180
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanНажать Alt+Insert?
Вах, классно. Похоже, оно, хотя до конца не разобрался, но приложение скомпилировалось после
добавления через Alt+Ins строк
Код: java
1.
2.
3.
    MyButton(Context context) {
        super(context);
    }


Правда когда прописал в xml формы вместо Button MyButton:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        <MyButton
            android:layout_width="fill_parent"
            android:layout_height="62dp"
            android:text="New Button"
            android:id="@+id/button"
            android:background="@drawable/buttons_bgrnd"
            android:layout_weight="0.04"
            android:textStyle="bold"
            android:textSize="24dp"
            android:textColor="#c8ffffff"
            android:paddingBottom="20dp" />


Кнопка потеряла фон из селектора и приложение ломается при старте, хотя вроде и компилируется.
(сам класс создан в отдельном файле в папке java):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
package com.example.user.myapplication;

import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

class MyButton extends Button {
    MyButton(Context context) {
        super(context);
    }

    private void DrawWord(Float dlt){
        // перерисовка текста
    }

    public boolean onTouch(View v, MotionEvent event) {
       if (event.getAction() == MotionEvent.ACTION_DOWN) {
           DrawWord(...);
         } else if (event.getAction() == MotionEvent.ACTION_UP) {
           DrawWord(...);
         }
        return false;
        }
}



То есть xml не видит этот класс? или что?
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38812419
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прокнопки,

нужно прописывать полный "путь" до класса, с пакетами.
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38812852
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanнужно прописывать полный "путь" до класса, с пакетами.
Путь прописал, но теперь тупо ломается при запуске:
Класс кнопки MyButton (пока перерисовку убрал практически пустой):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
package com.example.user.myapplication;

import android.content.Context;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

class MyButton extends Button {
    MyButton(Context context) {
        super(context);
    }
}


В активити прописал вместо Button
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
        <com.example.user.myapplication.MyButton
            android:layout_width="fill_parent"
            android:layout_height="62dp"
            android:text="New Button"
            android:id="@+id/button"
            android:background="@drawable/buttons_bgrnd"
            android:layout_weight="0.04"
            android:textStyle="bold"
            android:textSize="24dp"
            android:textColor="#c8ffffff"/>
...


Компилится, а на ADB не стартует ("К сожалению myapplication было остановлено")
Если в разметке вернуть обратно обынчую кнопку, то работает, то есть что-то не то с подклассом MyButton, а что неясно )
И полезно было бы наверно научиться понимать в чем причина ибо сейчас только тыком, но ведь пишутся же логи типа:
Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getConstructor(Class.java:446)
at android.view.LayoutInflater.createView(LayoutInflater.java:568)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
            at android.app.Activity.setContentView(Activity.java:1929)
            at com.example.user.myapplication.MainActivity.onCreate(MainActivity.java:21)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)

Но как по ним понять в чем причина ошибки...
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38812911
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что у тебя там

at com.example.user.myapplication.MainActivity.onCreate(MainActivity.java:21)
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38813155
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джибсчто у тебя там
at com.example.user.myapplication.MainActivity.onCreate(MainActivity.java:21)
Там onCreate активити:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
package com.example.user.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        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();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}


В частности по ctrl+g ->21 встает на камент
Код: java
1.
// Inflate the menu; this adds items to the action bar if it is present.



Вот полный лог
автор11-21 10:34:04.203 1248-1248/com.example.user.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.user.myapplication, PID: 1248
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.user.myapplication/com.example.user.myapplication.MainActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class com.example.user.myapplication.MyButton
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class com.example.user.myapplication.MyButton
at android.view.LayoutInflater.createView(LayoutInflater.java:603)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.example.user.myapplication.MainActivity.onCreate(MainActivity.java:21)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getConstructor(Class.java:446)
at android.view.LayoutInflater.createView(LayoutInflater.java:568)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
            at android.app.Activity.setContentView(Activity.java:1929)
            at com.example.user.myapplication.MainActivity.onCreate(MainActivity.java:21)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)

И в нем не нравится вот это:
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class com.example.user.myapplication.MyButton
Оно? Ошибка надувания класса? ))) И что не так? ) Может надо как-то инициализировать в основной форме этот подкласс MyButton?
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38813171
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вообще
Код: java
1.
 at com.example.user.myapplication.MainActivity.onCreate(MainActivity.java:21) 


показывает на
Код: java
1.
setContentView(R.layout.activity_main);
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38813182
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь примеры разных кнопок посмотреть https://github.com/search?utf8=?&q=android button
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38813931
Фотография Джибс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем, судя по ошибке, данный конструктор отсутствует.

public MyButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);

}
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38814908
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторМожешь примеры разных кнопок посмотреть
Спасибо, интересно и полезно, посмотрю.
Джибсвообщем, судя по ошибке, данный конструктор отсутствует.
Конструктор добавил по Alt+Ins, второй вариант (с первым не работало, со вторым заработало, но только на одной машине, на второй пока никак, падает точно так же).
То есть, не могу даже создать просто подкласс для Button, в котором в OnCreate записать свой код и переопределить метод onTouch. В коде основной активити получается переопределить методы кнопок, а создать отдельный подкласс кнопки с уже переопределенными методами и потом просто вставлять его в разметку как-то не очень. Не ясно как переопределять методы, т.к. не достать их спецификацию да и вообще надо джаву повтыкать конечно.
Пишу так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
package com.example.user.myapplication;

import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

class MyButton extends Button {
    MyButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    protected void DrawWord(Float dlt){
        // что-то там рисуем
    }

    protected void onCreate(Bundle savedInstanceState) {
        // определяем размер шрифта и выставляем через setTextSize

        setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    DrawWord((float) 0);
                    return true;
                } else if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    DrawWord((float) 0.3);
                    return true;
                }
                return false;
            }
        });
    }
}


Компилится, но при старте ругается на строку
setContentView(R.layout.activity_main);
в onCreate основной активити.
...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38814933
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прокнопки, ух ты как нарисовал-то... Я создал класс и через Alt+Ins достал onTouchEvent. Зачем тут еще листенер?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
package ru.wadman;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Button;

/**
 * Created by wadman on 24.11.2014.
 */
public class MyButton extends Button {
    public MyButton(Context context) {
        super(context);
    }

    public MyButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }

    public MyButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr);
    }
}

...
Рейтинг: 0 / 0
Наложение изображений в кнопках
    #38815248
Прокнопки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman , не очень понимаю видимо, про лисеннеры, а так да заработало почти.
По Alt+Ins действительно, там можно найти нужные шаблоны спецификаций методов и т.п. Удобно, спасибо.
Непонятно только зачем столько перегрузок конструктора для того же Button достаточно же одного или это для разных версий API?
И каким образом из них можно выбрать нужный тебе или надо автоматом писать все? (но тогда ведь фиг поймешь сходу, в какой из них писать свой код)
И еще снова селектор бэкграунда перестал теперь работать )
Буквы скачут, а фон не меняется, хотя в селекторе ничего не менял )
Класс кнопки:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
package com.example.user.myapplication;

import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Button;

public class MyButton extends Button {
    public MyButton(Context context, AttributeSet attrs) {
        //  первоначально перерисовываем текст кнопки
    }

    protected void DrawWord(Float dlt){
        // перерисовываем текст кнопки
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
          DrawWord((float) 0);
          return true;
        } else if (event.getAction() == MotionEvent.ACTION_DOWN) {
          DrawWord((float) 0.3);
         return true;
       }
       return super.onTouchEvent(event);
    }
}


Наверно что-то не то с onTouchEvent, раньше, когда фон кнопки перерисовывался селектором в onTouchEvent я возвращал False, сейчас же, чтобы текст "прыгал" приходится возвращать true, хотя и если false возвращать, то фон все равно не меняется, а текст при этом начинает "прыгать" криво )
Пробовал еще не селектором, а сразу в onTouchEvent выставлять setBackgrouund, но неясно как туда прописать имя ресурса:
setBackground(R.drawable.button_pressed);
setBackground(drawable.button_pressed);
ни в кавычках никак не лезет, и по хинту непонятно что писать, при старте ругается, типа не может преобразовать
int в Drawable, хотя в примерах Android так и пишут:
layout.setBackgroundResource(R.drawable.ready);
Или есть некий тип Drawable, типа канвы, на которой надо что-то нарисовать или указать ресус, а потому уже этот Drawable засунуть в setBackground?
...
Рейтинг: 0 / 0
25 сообщений из 92, страница 3 из 4
Форумы / Android [игнор отключен] [закрыт для гостей] / Наложение изображений в кнопках
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]