Как создать пользовательскую кнопку формы с селектором в android?

МАКЕТ


кнопка

требование


Я хочу поставить пользовательскую кнопку с селектором .

Макет приведен выше.

Если кто-то знает решение, поделитесь им.

Спасибо.

в основном вам нужно будет создать несколько новых XML-файлов и применить их к элементу Button. Как я могу видеть из макета, вам понадобится штрих и цвет фона с примененным эффектом затенения, вы можете больше исследовать предмет затенения, но цвет фона и штрих довольно прямолинейны.

Вот пример, done_rounded_btn.xml:

       

для части выбора, а затем вы создаете пользовательские чертежи, соответствующие макету.

Пример: zzzzzzzzzz_btn_orange:

      

А затем добавьте его в свою кнопку в качестве фона, main.xml:

  

Надеюсь это поможет!

Вы также можете создать форму, в которой используется селектор. Если ваша фигура просто меняет свой цвет в разных состояниях, это намного чище.

цвет / color_selector.xml

     

рисуем / shape.xml

      

Вы можете использовать это вместо стандартной кнопки и установить селектор в качестве фона в xml:

 import android.content.Context; import android.graphics.Bitmap; import android.graphics.Color; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.Button; /** * Custom Shape Button which ignores touches on transparent background. */ public class ButtonWithUntouchableTransparentBg extends Button { public ButtonWithUntouchableTransparentBg(Context context) { this(context, null); } public ButtonWithUntouchableTransparentBg(Context context, AttributeSet attrs) { this(context, attrs, 0); } public ButtonWithUntouchableTransparentBg(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setDrawingCacheEnabled(true); } @Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); // ignores touches on transparent background if (isPixelTransparent(x, y)) return true; else return super.onTouchEvent(event); } /** * @return true if pixel from (x,y) is transparent */ private boolean isPixelTransparent(int x, int y) { Bitmap bmp = Bitmap.createBitmap(getDrawingCache()); int color = Color.TRANSPARENT; try { color = bmp.getPixel(x, y); } catch (IllegalArgumentException e) { // x or y exceed the bitmap's bounds. // Reverts the View's internal state from a previously set "pressed" state. setPressed(false); } // Ignores touches on transparent background. if (color == Color.TRANSPARENT) return true; else return false; } } 

внутри вашего предмета поместите форму в селектор XML

EX FROM MY CODE:

           

  • Как программно добавлять кнопки в макет по одному в нескольких строках?
  • Обнаружить кнопку средней кнопки (кнопка прокрутки) с помощью jQuery
  • Как программно нажать кнопку в WPF?
  • Как удалить простыню вокруг кнопок в Android?
  • Использование JavaFX 2.2 Мнемоника (и ускорители)
  • Невозможно добавить текст в виде кнопки в андроид-студии
  • Изображение в WPF-кнопке не отображается в режиме Runtime
  • Динамическая кнопка asp.net с обработчиком событий
  • Как создать стандартные кнопки Borderless (как указано в руководстве по проектированию)?
  • Отключить кнопку возврата в android
  • Плоская кнопка wpf
  • Давайте будем гением компьютера.