Zar E Ahmer
Zar E Ahmer

Reputation: 34360

equal margin or space in a singe TextView

I used single textView for showing view like. As UpCase letter and integer take different margin or padding they aren't properly align I am trying to add

  name:       AnyName
  age:        23
  caseId:     anyID

then

        setColor(caseByTv, "By:	" + caseDetail.getUpdatedByUser().trim(), 0, 3, 0xFF777777);
        setColor(serviceTypeTv, "Type:\t\t" + caseDetail.getType().trim(), 0, 5, 0xFF777777);
        setColor(updatedDateTv, "Updated:\\u0009\\u0009" + caseDetail.getUpdatedOnDate().trim(), 0, 8, 0xFF777777);
        setColor(orderDetailTv, "Order #\u0009\u0009" + caseDetail.getOrderNumber().trim(), 0, 8, 0xFF777777);
        setColor(nameTv, "Name:          " + caseDetail.getName().trim(), 0, 8, 0xFF777777);
        setColor(emailTv, "Email:           " + caseDetail.getEmail().trim(), 0, 7, 0xFF777777);
        setColor(phoneNoTv, "Phone:         " + caseDetail.getPhone().trim(), 0, 7, 0xFF777777);
        setColor(categoryTypeTv, "Category:    " + caseDetail.getCaseCategory().trim(), 0, 10, 0xFF777777);**strong text**

where setColor

public void setColor(TextView view, String fulltext, int startIndex, int endIndex, int color) {
        Spannable str = new SpannableString(fulltext);
        str.setSpan(new ForegroundColorSpan(mContext.getResources().getColor(R.color.guest_connection_grey)), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        view.setText(str);
    }

I have tried multiple ways to add tab . Firstly the tab isn't working no space shown and I know I can achieve it by using two textView in a row. Can I achieve my goal in this manner.

Upvotes: 0

Views: 135

Answers (1)

AskNilesh
AskNilesh

Reputation: 69689

Try this

    tvSaveText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            StringBuilder order = new StringBuilder();
            order.append(rightSpace(30, "10302351"));
            order.append("30");
            Log.e("RESULT1",order.toString());


            StringBuilder order2 = new StringBuilder();
            order2.append(rightSpace(30, "10"));
            order2.append("30");
            Log.e("RESULT2",order2.toString());


            StringBuilder order3 = new StringBuilder();
            order3.append(rightSpace(30, "nilesh rathod"));
            order3.append("Nilesh");
            Log.e("RESULT3",order3.toString());
        }
    });

rightSpace() function

public StringBuilder rightSpace(int max, String name) {

    StringBuilder stringBuilder = new StringBuilder();

    stringBuilder.append(name);
    for (int i = 0; i < max - name.length(); i++) {
        stringBuilder.append(" ");
    }


    return stringBuilder;
}

OUTPUT

E/RESULT1: 10302351                      30
E/RESULT2: 10                            30
E/RESULT3: nilesh rathod                 Nilesh

Upvotes: 3

Related Questions