|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Чтобы лучше понять, как посчитать, хотелось бы знать высоту кнопку и высоту шрифта. Пишу просто: Код: java 1.
Но getHeight дает 0 почему-то. А может есть и проще спобы пофиксить относительное положение текста на кнопке независимо от того как кнопка растягивается и на каком разрешении экрана работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 15:56 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
ПрокнопкиНо getHeight дает 0 почему-то. Нужно знать, где вызывать: после создания всех вьюх, дернуть measure главной вьюхи (активити или фрагмент) и только тогда спрашивать размеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 16:11 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
wadmanНужно знать, где вызывать: после создания всех вьюх, дернуть measure главной вьюхи (активити или фрагмент) и только тогда спрашивать размеры. Вызываю в onCreate активити. Что за метод measure пока не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 16:18 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
ПрокнопкиВызываю в onCreate активити. https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#newwindow=1&q=android after view created ПрокнопкиЧто за метод measure пока не понял. https://www.google.ru/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#newwindow=1&q=android measure view ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 16:37 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
wadman , спасибо большое, получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 16:48 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Еще какая-то непонятка: 1. в onCreate активити вызываю measure кнопки. Код: java 1.
2. выставляю размер текста кнопки в процентном соотношении к высоте кнопки через setTextSize типа: Код: java 1.
При этом текст кнопки становится огромным больше самой кнопки 3. Если же посмотреть что получается по цифрам: Код: java 1.
Выводит на кнопку 231/ 77 То есть в setTextSize выставляется 231, хотя по соотношению должно получиться 77. Как таг? ) Есть подозрение, что например setTextSize выставляет размер шрифта в одних единицах изм., а getTextSize выдает размер в других единицах. То есть в getTextSize выставили 77, а в getTextSize получим уже большую цифру. (и это подтверждается на практике, тупо забил 77 в setTextSize а getTextSize возвращает 231). Вопрос , как бы задать размер шрифта, чтобы он соотносился с высотой кнопки? Например, 40% от текущей высоты кнопки? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 18:05 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
setTextSize выставляет значение в sp unit ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 20:43 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
предвидя твой следующий вопрос, да решение есть. Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2014, 20:46 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Джибс , спасибо, теперь все получилось до конца. Вот только сам код.... Пишу типа: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
То есть код дублируется и по-хорошему, создать бы отдельный метод внутри этого метода и вызвать его, давая на вход кнопку и смещение для надписи, но как в Java создавать методы внутри методов, если такое возможно, наверно надо создать отдельный класс, в нем нужные методы и их вызывать, это буду читать про джаву ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2014, 11:50 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2014, 14:07 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Джибс , да. Это оказалось довольно просто. Спасибо. Теперь бы создать некий класс активити, в котором переопределить метод onCreate (чтобы в нем по умолчанию форматировались все кнопки, которые есть на активити). И дальше уже в проекте создавать новые активити, наследуя их от этого с переопределенным onCreate, но не динамически в коде создавать конечно, а именно обычным способом. То есть как не писать этот код в каждой активити да еще для каждой кнопки? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2014, 15:11 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Прокнопки, а принципы ООП слабо использовать? То есть создать наследника кнопки и вставлять его уже в xml? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2014, 15:23 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
wadmanТо есть создать наследника кнопки и вставлять его уже в xml? Начинаю создавать подкласс в отдельном файле: Код: java 1. 2.
Но не пойму пока как переопределять методы? То есть каждый метод базового класса Button имеет наверно какие-то свои вх.исх. параметры по умолчанию и при переопределении метода, надо их же упомянуть так? Если так, то как в студии найти некую спецификацию метода класса? Или все как-то проще? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2014, 16:01 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
ПрокнопкиИли все как-то проще? Нажать Alt+Insert? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2014, 16:12 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
wadmanНажать Alt+Insert? Вах, классно. Похоже, оно, хотя до конца не разобрался, но приложение скомпилировалось после добавления через Alt+Ins строк Код: java 1. 2. 3.
Правда когда прописал в xml формы вместо Button MyButton: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Кнопка потеряла фон из селектора и приложение ломается при старте, хотя вроде и компилируется. (сам класс создан в отдельном файле в папке 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.
То есть xml не видит этот класс? или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2014, 16:54 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Прокнопки, нужно прописывать полный "путь" до класса, с пакетами. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2014, 19:44 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
wadmanнужно прописывать полный "путь" до класса, с пакетами. Путь прописал, но теперь тупо ломается при запуске: Класс кнопки MyButton (пока перерисовку убрал практически пустой): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
В активити прописал вместо Button Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Компилится, а на 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) Но как по ним понять в чем причина ошибки... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2014, 11:24 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
что у тебя там at com.example.user.myapplication.MainActivity.onCreate(MainActivity.java:21) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2014, 11:55 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Джибсчто у тебя там 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.
В частности по ctrl+g ->21 встает на камент Код: java 1.
Вот полный лог автор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? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2014, 13:41 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
А вообще Код: java 1.
показывает на Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2014, 13:49 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Можешь примеры разных кнопок посмотреть https://github.com/search?utf8=?&q=android button ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2014, 13:53 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
вообщем, судя по ошибке, данный конструктор отсутствует. public MyButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2014, 10:49 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
авторМожешь примеры разных кнопок посмотреть Спасибо, интересно и полезно, посмотрю. Джибсвообщем, судя по ошибке, данный конструктор отсутствует. Конструктор добавил по 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.
Компилится, но при старте ругается на строку setContentView(R.layout.activity_main); в onCreate основной активити. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2014, 11:18 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
Прокнопки, ух ты как нарисовал-то... Я создал класс и через 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2014, 11:35 |
|
Наложение изображений в кнопках
|
|||
---|---|---|---|
#18+
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.
Наверно что-то не то с 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? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2014, 15:40 |
|
|
start [/forum/topic.php?fid=13&msg=38812020&tid=1331498]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 164ms |
0 / 0 |