Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中居中显示祝酒词中的文本_Android_Text_Alignment_Center_Toast - Fatal编程技术网

在Android中居中显示祝酒词中的文本

在Android中居中显示祝酒词中的文本,android,text,alignment,center,toast,Android,Text,Alignment,Center,Toast,我想知道是否有一种方法可以将祝酒词中的所有文本显示在中间。例如,我有一个祝酒词,里面有两行文字。出于纯粹的美学原因,我希望文本居中对齐,而不是左对齐。我查阅了文档,找不到任何关于它的信息。有没有一个我错过的简单方法 谢谢 Chris使用Toast的设置视图(视图)功能提供带有重力的视图。Toast的中心构建在文本视图上,默认重力是左对齐的。因此,您需要创建自己的文本视图,例如: <TextView android:layout_width="fill_parent"

我想知道是否有一种方法可以将祝酒词中的所有文本显示在中间。例如,我有一个祝酒词,里面有两行文字。出于纯粹的美学原因,我希望文本居中对齐,而不是左对齐。我查阅了文档,找不到任何关于它的信息。有没有一个我错过的简单方法

谢谢
Chris

使用Toast的
设置视图(视图)
功能提供带有
重力的
视图。Toast的中心构建在文本视图上,默认重力是左对齐的。因此,您需要创建自己的文本视图,例如:

<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical|center_horizontal"
    android:text="all the text you want"
/>
这是肮脏的黑客,但是

((TextView)((LinearLayout)toast.getView()).getChildAt(0))
    .setGravity(Gravity.CENTER_HORIZONTAL);
改编自:


并不是说
findViewById(android.R.id.message)
是错误的,但为了防止(未来?)实现上的差异,我自己使用了一种稍微不同的方法:

void centerText(View view) {
    if( view instanceof TextView){
        ((TextView) view).setGravity(Gravity.CENTER);
    }else if( view instanceof ViewGroup){
        ViewGroup group = (ViewGroup) view;
        int n = group.getChildCount();
        for( int i = 0; i<n; i++ ){
            centerText(group.getChildAt(i));
        }
    }
}
没有黑客:

String text = "Some text";
Spannable centeredText = new SpannableString(text);
centeredText.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER),
            0, text.length() - 1,
            Spannable.SPAN_INCLUSIVE_INCLUSIVE);

Toast.makeText(getActivity(), centeredText, Toast.LENGTH_LONG).show();
除中心线外,还有其他路线


此变化与使用线性布局有关:

toast most be center的简单代码

对我来说很有用:

Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER| Gravity.BOTTOM, 0, 20);
toast.show();

在科特林中:

fun makeToast(context: Context, resId: Int) {
    val toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT)
    val view = toast.view.findViewById<TextView>(android.R.id.message)
    view?.let {
        view.gravity = Gravity.CENTER
    }
    toast.show()
}
funmaketoos(上下文:context,resId:Int){
val toast=toast.makeText(上下文、剩余、toast.LENGTH\u SHORT)
val view=toast.view.findviewbyd(android.R.id.message)
风景?让我看看{
view.gravity=gravity.CENTER
}
吐司
}

这不是文本的中心,而是祝酒词本身。太好了!确保你周围有一个
ClassCastException
catch,以防将来祝酒的视图层次发生变化。这在我的Nexus 4上有效。我建议这样做,如Max Howell所说,用ClassCastException包装它,然后在它抛出实际异常时使用它。在toast.getView()返回的视图上使用findViewById(android.R.id.message)以确保所有版本上的代码都能正常工作这是一个黑客解决方案,在未来的android版本中可能无法工作,例如,如果第一个子对象不是TextView。不遵循Java编码标准。欢迎使用SO。请看一下这本书。如前所述,您的代码格式不正确,不包含解释。很抱歉,您的代码将重心设置为烤面包片(显示在中间屏幕),而不是文本为什么默认重心不是gravity.center?愚蠢的机器人!这是正确的解决方案-对我有效。但对我无效。文本仍然向左对齐。这对我也不适用。API<23如何?这有关系吗?这是不推荐的,有解决办法吗?
Toast t = Toast.makeText(context, msg,Toast.LENGTH_SHORT);
centerText(t.getView());
t.show();
String text = "Some text";
Spannable centeredText = new SpannableString(text);
centeredText.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER),
            0, text.length() - 1,
            Spannable.SPAN_INCLUSIVE_INCLUSIVE);

Toast.makeText(getActivity(), centeredText, Toast.LENGTH_LONG).show();
Toast SampleToast = Toast.makeText(this, "This is the example of centered text.\nIt is multiline text.", Toast.LENGTH_SHORT);
LinearLayout OurLayout = (LinearLayout) SampleToast.getView();

if (OurLayout.getChildCount() > 0) 
{
TextView SampleView = (TextView) OurLayout.getChildAt(0);
SampleView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
}

SampleToast.show();
Toast t=Toast.makeText(getApplicationContext(),"Text",Toast.LENGTH_LONG);
t.setText("Password Does't match...");
t.setGravity(0, 0, 0);
t.show();
Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER| Gravity.BOTTOM, 0, 20);
toast.show();
fun makeToast(context: Context, resId: Int) {
    val toast = Toast.makeText(context, resId, Toast.LENGTH_SHORT)
    val view = toast.view.findViewById<TextView>(android.R.id.message)
    view?.let {
        view.gravity = Gravity.CENTER
    }
    toast.show()
}