怎么改变自定义toast的width和height

Android 码拜 6年前 (2015-05-10) 791次浏览 0个评论

不知道为什么不能使width的值随意变大。可以改变width的值在400dp以下,如果超过400dp的话,toast的宽度就固定不变了,怎么才能使其变大呢?
toast的layout是这样的。

<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=".MainActivity" >

    
    <RelativeLayout 
        android:id="@+id/toast_layout_root"
	    android:layout_width="561dp"
	    android:layout_height="121dp"  
	    android:background="@drawable/bg_toast"
	    android:visibility="visible"   >
	    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="@string/hello_world" />
	    </RelativeLayout>

</RelativeLayout>

源代码是这样的

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		    
		    Toast   sToast = new Toast(getApplication());
	        LayoutInflater inflater = getLayoutInflater();
	        View layout = inflater.inflate(R.layout.activity_main, null);
	        layout.findViewById(R.id.toast_layout_root).setVisibility(View.VISIBLE);
	        int tmp = 370;
	        if(getResources().getDisplayMetrics().densityDpi==160)
	            tmp = 270;
	        sToast.setGravity(Gravity.CENTER, 0, tmp);
	        sToast.setDuration(Toast.LENGTH_LONG);
	        sToast.setView(layout);

	        sToast.show();


	}
10分
 你手机像素是多少?   400dp 有没有超过手机像素宽度?
引用 1 楼 ncepu307 的回复:

 你手机像素是多少?   400dp 有没有超过手机像素宽度?

1920×1080,dpi为320,确定没超过,toast只占屏幕的一小部分。怎么改变自定义toast的width和height,图中包裹图片的layout大小是一样的,但装载到toast中就变得很小了。

10分
楼主,这个问题解决了吗?我遇到跟你一样的问题。
无论width赋什么值,出来的Toast都是一个正方形。郁闷中、、、
设置子view的宽度和高度可以改变整个toast的大小toast_layout_root.getLayoutParams().width
引用 4 楼 anhenzhufeng 的回复:

设置子view的宽度和高度可以改变整个toast的大小toast_layout_root.getLayoutParams().width

什么意思啊  我在xml里面改变宽度还是无效啊  

Toast t = Toast.makeText(this, “Hello”, Toast.LENGTH_SHORT);
t.setGravity(Gravity.FILL_HORIZONTAL, 0, 0);

这样就可以了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么改变自定义toast的width和height
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!