gpt4 book ai didi

android - 如何从 xml 获取垂直按钮 View

转载 作者:行者123 更新时间:2023-11-29 17:50:35 25 4
gpt4 key购买 nike

我想在 Vertically 中创建一个 Button。也许我们可以通过扩展一个按钮并将 Canvas 重新渲染(旋转)到垂直,我们可以获得自定义 Button。但我需要它来自 xml。检查图形表示。我需要一个这样的按钮。

enter image description here

最佳答案

请参阅下面的链接,应该有解决您问题的方法

http://blog.stylingandroid.com/archives/796

这是关于如何创建 vertical-textView 的教程但由于 Button 类扩展了 TextView,本教程也适用于 Buttons

更新:

1) 在 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>

2) 将名为 hello 的默认字符串替换为一个名为 res/values/strings.xml 的文本:

    <?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="text">Vertical Text</string>
<string name="app_name">VerticalText</string>
</resources>

3) 创建自定义 VerticalTextView 类

    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();
}
}

4) 更改 res/layout/main.xml 中的主布局以包含 VerticalTextView 控件:

<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" />

5) 结果

enter image description here

来源:http://blog.stylingandroid.com/archives/796

关于android - 如何从 xml 获取垂直按钮 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23127237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com