2016-07-25 3 views
0

나는 간단한 플로팅 메뉴를 만들었습니다. 플로팅 메뉴가 제대로 작동합니다.Android에서 플로팅 버튼에 텍스트 추가

하지만 아래 그림과 같이 메뉴의 왼쪽에 텍스트를 추가하고 싶습니다.

enter image description here

어떤 사람은 제가 보여 주었다 이미지 같은 부동 버튼을하기 전에 텍스트를 추가하는 데 도움이 될 수 있습니다.

부동 메뉴 XML

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/activity_ticket_details" /> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="230dp" 
     android:layout_gravity="bottom|end" 
     android:layout_marginRight="@dimen/fab_margin" 
     android:visibility="invisible" 
     app:backgroundTint="@color/colorPrimary" 
     app:elevation="6dp" 
     app:pressedTranslationZ="12dp" 
     android:src="@drawable/icon_floating_forward" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="160dp" 
     android:layout_gravity="bottom|end" 
     android:layout_marginRight="@dimen/fab_margin" 
     android:visibility="invisible" 
     app:backgroundTint="@color/colorPrimary" 
     app:elevation="6dp" 
     app:pressedTranslationZ="12dp" 
     android:src="@drawable/icon_floating_note" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="90dp" 
     android:layout_gravity="bottom|end" 
     android:layout_marginRight="@dimen/fab_margin" 
     android:visibility="invisible" 
     app:elevation="6dp" 
     app:backgroundTint="@color/colorPrimary" 
     app:pressedTranslationZ="12dp" 
     android:src="@drawable/icon_floating_replay" /> 
    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     app:elevation="6dp" 
     app:backgroundTint="@color/colorPrimaryDark" 
     app:pressedTranslationZ="12dp" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@drawable/icon_floating_replay" /> 

</android.support.design.widget.CoordinatorLayout> 

활동 클래스

public class TicketDetails extends AppCompatActivity implements View.OnClickListener{ 
    TextView tv_ticket_id; 
    ImageView back_arrow; 
    TextView ticket_status; 
    TextView ticket_overdue; 
    TextView ticket_subject; 

    Context context; 
    ProgressDialog pDialog; 
    public String BASEURL; 
    public ApplicationEnvironmentURL applicationEnvironment; 

    private Boolean isFabOpen = false; 
    private FloatingActionButton fab,fab1,fab2,fab3; 
    private Animation fab_open,fab_close,rotate_forward,rotate_backward; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.activity_ticket_details); 
     setContentView(R.layout.activity_ticket_details_floating); 

     applicationEnvironment = new ApplicationEnvironmentURL(this.context); 
     context = this.getApplicationContext(); 

     Intent intent = getIntent(); 
     String ticket_id = intent.getStringExtra("ticket_id"); 


     back_arrow = (ImageView) findViewById(R.id.IV_td_leftarrow_bar); 
     back_arrow.setOnClickListener(onClickListener); 

     /*********************** Floating Icon *****************************************************/ 
     fab = (FloatingActionButton)findViewById(R.id.fab); 
     fab1 = (FloatingActionButton)findViewById(R.id.fab1); 
     fab2 = (FloatingActionButton)findViewById(R.id.fab2); 
     fab3 = (FloatingActionButton)findViewById(R.id.fab3); 
     fab_open = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fab_open); 
     fab_close = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fab_close); 
     rotate_forward = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.rotate_forward); 
     rotate_backward = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.rotate_backward); 
     fab.setOnClickListener(this); 
     fab1.setOnClickListener(this); 
     fab2.setOnClickListener(this); 
     fab3.setOnClickListener(this); 
     /*******************************************************************************************/ 


    } 

    @Override 
    public void onClick(View v) { 
     int id = v.getId(); 
     switch (id){ 
      case R.id.fab: 
       animateFAB(); 
       break; 
      case R.id.fab1: 
       break; 
      case R.id.fab2: 
       break; 
      case R.id.fab3: 
       break; 
     } 
    } 

    public void animateFAB(){ 

     if(isFabOpen){ 
      fab.startAnimation(rotate_backward); 
      fab1.startAnimation(fab_close); 
      fab2.startAnimation(fab_close); 
      fab3.startAnimation(fab_close); 
      fab1.setClickable(false); 
      fab2.setClickable(false); 
      fab3.setClickable(false); 
      isFabOpen = false; 
      Log.d("ZF-Fab", "close"); 

     } else { 

      fab.startAnimation(rotate_forward); 
      fab1.startAnimation(fab_open); 
      fab2.startAnimation(fab_open); 
      fab3.startAnimation(fab_open); 
      fab1.setClickable(true); 
      fab2.setClickable(true); 
      fab3.setClickable(true); 
      isFabOpen = true; 
      Log.d("ZF-Fab","open"); 

     } 
    } 

..............more 

답변

0

당신이 FAB 알고 그래서 당신은 drawble를 만들 필요가 거기에 텍스트를 표시하기 위해보기에 표시 할 drawable 필요 아래에 코드를 사용하여 텍스트를 작성하십시오.

FloatingActionButton fab3 = (FloatingActionButton)findViewById(R.id.fab3); 
fab3.setDrawble or source there must a method 

TextDrawable trxtDrawable = new TextDrawable("AB"); 
fab3.setImageDrawable(trxtDrawable); 

TextDrawable :

public class TextDrawable extends Drawable { 

    private final String text; 
    private final Paint paint; 

    public TextDrawable(String text) { 

     this.text = text; 

     this.paint = new Paint(); 
     paint.setColor(Color.WHITE); 
     paint.setTextSize(22f); 
     paint.setAntiAlias(true); 
     paint.setFakeBoldText(true); 
     paint.setShadowLayer(6f, 0, 0, Color.BLACK); 
     paint.setStyle(Paint.Style.FILL); 
     paint.setTextAlign(Paint.Align.LEFT); 
    } 

    @Override 
    public void draw(Canvas canvas) { 
     canvas.drawText(text, 0, 0, paint); 
    } 

    @Override 
    public void setAlpha(int alpha) { 
     paint.setAlpha(alpha); 
    } 

    @Override 
    public void setColorFilter(ColorFilter cf) { 
     paint.setColorFilter(cf); 
    } 

    @Override 
    public int getOpacity() { 
     return PixelFormat.TRANSLUCENT; 
    } 
} 
+0

숨바꼭질 TNX. 시도했다. 이 아이콘은 아이콘을 제거한 다음 텍스트를 삽입합니다. 나는 위의 그림에서 보이는 것처럼 양쪽을 가지고 싶다. –

+0

@SathyaBaman 당신은'TextDrawable'을 수정하여 그것의'ImageView'를 추가 할 수 있고 그것의'R.id.xyz'를 param으로 전달할 수 있습니다. ImageView 리소스로이 ID를 사용하십시오. –

+0

@SathyaBaman 내 게시물이 도움이된다면 투표를 부탁하십시오. –