2016-01-24 1 views
0

У меня есть изображениеView, в котором я использую OnClickListener, таким образом у меня есть настраиваемая кнопка.Android: наличие пользовательских кнопок с изображением при выравнивании текста вправо и влево

У меня также есть текст рядом с изображением, но я хочу, чтобы они могли также щелкнуть рядом с текстом.

Мне было интересно, можно ли создать файл с возможностью рисования и просто иметь одну кнопку.

Вот то, что я до сих пор: http://i.imgur.com/OnKN56i.png

ответ

0

Вы можете сделать это с помощью обычной кнопки. Установите изображения с помощью атрибутов drawableLeft и drawableRight.

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

    <Button 
     android:id="@+id/backButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:drawableLeft="@drawable/ic_chevron_left_white_24dp" 
     android:text="Back" /> 

    <Button 
     android:id="@+id/nextButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:drawableRight="@drawable/ic_chevron_right_white_24dp" 
     android:text="Next" /> 

</RelativeLayout> 

Вы также можете установить android:background="@null" удалить кнопку план и показать только текст и значок. Он будет выглядеть ближе к вашему снимку экрана, и пользователь может нажать на значок или текст, и кнопка получит щелчок.

+0

Ладно, так что изображение работает. Хотя фон «@null» недействителен, вместо этого я использовал прозрачный цвет. Теперь по какой-то причине изображение слишком далеко влево, а также текст не появляется. Я установил высоту и ширину до 50dp каждый. [ссылка] (http://i.imgur.com/rB2oxgt.png) – Axiom

+0

Также, установив ширину на «wrap_content». Изображение становится очень большим. Также текст очень далек от фактического изображения. Также мне удалось сдвинуть кнопку ближе к краю, установив отступ до -15dp для каждой кнопки. Хотя все же изображение очень велико. – Axiom

+0

[updated_image] (http://i.imgur.com/mJbt7Oo.png) – Axiom

0

Создать CustomView:

package com.android4dev.navigationview; 

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

/** 
* Created by 77930 on 2016/1/24. 
*/ 
public class MyView extends ImageView { 
    public interface OnAreaClickListener{ 
     public void onLeftClick(MyView view); 
     public void onRightClick(MyView view); 
    } 

    public OnAreaClickListener listener; 

    public OnAreaClickListener getListener() { 
     return listener; 
    } 

    public void setListener(OnAreaClickListener listener) { 
     this.listener = listener; 
    } 

    public MyView(Context context) { 
     super(context); 
    } 

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

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

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      if(event.getX() < getWidth()/3){ 
       if(listener!=null) listener.onLeftClick(MyView.this); 
      }else if(event.getX() > getWidth()/3){ 
       if(listener!=null) listener.onRightClick(MyView.this); 
      } 
     } 

     return super.onTouchEvent(event); 
    } 
} 

Добавить в макете:

<com.android4dev.navigationview.MyView 
     android:id="@+id/btn_all" 
     android:scaleType="fitXY" 
     android:adjustViewBounds="true" 
     android:src="@mipmap/ic_launcher" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

Bind Нажмите:

MyView myView = (MyView)findViewById(R.id.btn_all); 
    myView.setListener(new MyView.OnAreaClickListener() { 
     @Override 
     public void onLeftClick(MyView view) { 

     } 

     @Override 
     public void onRightClick(MyView view) { 

     } 
    });