Как я могу сделать разделительную линию с «ИЛИ» посередине в RelativeLayout в XML-файле действия? Я пытаюсь сделать что-то вроде «------- ИЛИ --------» с правильными линиями и «ИЛИ» посередине.

0
Arpit Tomar 18 Фев 2016 в 19:03

3 ответа

Лучший ответ

Вы можете попробовать что-то подобное ниже.

  <LinearLayout
   xmlns:android = "http://schemas.android.com/apk/res/android"
   android:layout_width = "match_parent"
   android:layout_height = "match_parent"
   android:background = "#ffffff"
   android:gravity = "center"
   android:orientation = "horizontal">

  <View
     android:layout_width = "75dp"
     android:layout_height = "3dp"
     android:background = "#000"/>

  <TextView
     android:id = "@+id/tv"
     android:layout_width = "wrap_content"
     android:layout_height = "wrap_content"
     android:layout_gravity = "center"
     android:layout_marginLeft = "5dp"
     android:layout_marginRight = "5dp"
     android:gravity = "center"
     android:text = "or"
     android:textSize = "24sp"/>

  <View
     android:layout_width = "75dp"
     android:layout_height = "3dp"
     android:background = "#000"/>
</LinearLayout>

Надеюсь, это поможет тебе.

0
Ragu Swaminathan 18 Фев 2016 в 16:09

После некоторого исследования я нашел здесь этот вопрос: Источник

Это должно быть именно то, что вам нужно. Суть состоит в том, чтобы создать настраиваемый класс с возможностью рисования, который расширяет Drawable и принимает текст в свой конструктор.

Если вам нужна дополнительная информация, я потрачу некоторое время, чтобы сделать ваш настраиваемый чертеж.

Изменить: вот полный исходный код

package com.example.XXX.customdividerdrawable;

import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;

public class TextDividerDrawable extends Drawable {

    private final String text;
    private final Paint paint;

    public TextDividerDrawable(String text, Paint paint) {
        this.text = text;
        this.paint = paint;
    }

    @Override
    public void draw(Canvas canvas) {
       Rect bounds = new Rect();
       paint.getTextBounds(text, 0, text.length(), bounds);
       int margin = 10;

       canvas.drawLine(
           margin, (canvas.getHeight() / 2) - (bounds.height() / 2),
           canvas.getWidth() / 2 - margin,
           (canvas.getHeight() / 2) - (bounds.height() / 2), paint
       );

       canvas.drawText(text, canvas.getWidth() / 2, canvas.getHeight() / 2, paint);

       canvas.drawLine(
          canvas.getWidth() / 2 + (margin + bounds.width()),
          (canvas.getHeight() / 2) - (bounds.height() / 2),
          canvas.getWidth() - margin,
          (canvas.getHeight() / 2) - (bounds.height() / 2), 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;
    }
}

Не помещайте это в качестве фона для каждого вида, который вам нужен:

        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setTextSize(22f);
        paint.setStyle(Paint.Style.FILL);

        TextDividerDrawable textDividerDrawable = new TextDividerDrawable("OR", paint);

        View view= findViewById(R.id.view);

        view.setBackground(textDividerDrawable);

Например:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.XXX.customdividerdrawable.MainActivity">

    <View
        android:id="@+id/view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </View>

</RelativeLayout>
0
Community 23 Май 2017 в 11:45

Попробуйте TextView с шириной "match_parent" / "fill_parent" и поместите его гравитацию в центр.

0
Lerul Ler 18 Фев 2016 в 16:06