Добавление вертикальной кнопки в макет - PullRequest
0 голосов
/ 03 сентября 2018

Я создал Layout и пытаюсь добавить vertical-button, но я не могу изменить его с horizontal на vertical. vertical-button должен идти рядом с imageview btn_about_us.

Компоновка

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:layout_margin="20dp"
android:orientation="vertical">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

<Button
    android:id="@+id/btn_add_client"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:visibility="gone"

    android:text="Add Client" />

<Button
    android:id="@+id/btn_view_client"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:layout_marginBottom="10dp"
    android:text="View Client" />

<Button
    android:id="@+id/btn_authenticate"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:background="@drawable/authorization" />

<Button
    android:id="@+id/btn_view_client_own_imei"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:background="@drawable/view_imei"/>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

<ImageView
    android:id="@+id/btn_about_us"
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/b_silver"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <Button
            android:id="@+id/btnHelp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:text="HELP"/>

    </LinearLayout>


</LinearLayout>

<View
    android:layout_marginTop="2dp"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@android:color/darker_gray"/>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center">

    <TextView
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/screen1298_heading"
        android:textSize="20sp" />

    <View
        android:layout_marginTop="2dp"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray"/>

    <com.example.warrenedy.julyfinal.Gif.GifImageView
        android:id="@+id/GifImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <!--<View-->
        <!--android:layout_marginTop="2dp"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="1dp"-->
        <!--android:background="@android:color/darker_gray"/>-->

    <TextView
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/screen1298_1"
        android:textColor="@color/colorWhite"/>

    <TextView
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/screen1298_2"
        android:textColor="@color/colorWhite"/>

    <TextView
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/screen1298_3"
        android:textColor="@color/colorWhite"/>

    <TextView
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/screen1298_4"
        android:textColor="@color/colorWhite"/>

    <ImageView
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/richard_daguiar"/>

</LinearLayout>
</LinearLayout>

</ScrollView>

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Используйте просмотр текста вместо кнопки. Кнопка также расширена от класса TextView. Вот пользовательский TextView, который сделает текстовое представление вертикальным.

Надеюсь, это решит проблему.

 public class VerticalTextView extends TextView
{
    final boolean topDown;

    public VerticalTextView( Context context, 
        AttributeSet attrs )
    {
        super( context, attrs );
        final int gravity = getGravity();
        if ( Gravity.isVertical( gravity )
            && ( gravity & Gravity.VERTICAL_GRAVITY_MASK ) 
            == Gravity.BOTTOM )
        {
            setGravity( 
                ( gravity & Gravity.HORIZONTAL_GRAVITY_MASK )
                    | Gravity.TOP );
            topDown = false;
        }
        else
        {
            topDown = true;
        }
    }

    @Override
    protected void onMeasure( int widthMeasureSpec, 
        int heightMeasureSpec )
    {
        super.onMeasure( heightMeasureSpec, 
            widthMeasureSpec );
        setMeasuredDimension( getMeasuredHeight(), 
            getMeasuredWidth() );
    }

    @Override
    protected void onDraw( Canvas canvas )
    {
        TextPaint textPaint = getPaint();
        textPaint.setColor( getCurrentTextColor() );
        textPaint.drawableState = getDrawableState();

        canvas.save();

        if ( topDown )
        {
            canvas.translate( getWidth(), 0 );
            canvas.rotate( 90 );
        }
        else
        {
            canvas.translate( 0, getHeight() );
            canvas.rotate( -90 );
        }

        canvas.translate( getCompoundPaddingLeft(), 
            getExtendedPaddingTop() );

        getLayout().draw( canvas );
        canvas.restore();
    }
}

Тогда используйте в XML, как это

<com.stylingandroid.verticaltext.VerticalTextView
style="@style/verticalTextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom|right"
android:text="@string/text" />

Создание стиля в res / values ​​/ styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources
    xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="verticalTextStyle"
        parent="android:Widget.TextView">
        <item name="android:padding">20dp</item>
        <item name="android:textSize">20sp</item>
    </style>
</resources>
0 голосов
/ 03 сентября 2018

Вместо того, чтобы брать кнопку, возьмите linearlayout. В linearlayout возьмите текстовое представление. поверните текстовое представление на 90 градусов, используя android: вращение = "90" Это будет работать так же, как кнопка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...