我在Android中寻找将采用输入(text,text_font_size,device_width)的方法,并根据这些计算,它将返回显示特定文本所需的高度?
我正在根据他的内容设置文本视图/ webview高度运行时,我知道warp内容但我不能在我的情况下使用因为一些web视图最小高度问题.
所以我试图计算高度,并根据我设置视图高度.
我尝试过以下方法
Paint paint = new Paint();
paint.setTextSize(text.length());
Rect bounds = new Rect();
paint.getTextBounds(text, 0, 1, bounds);
mTextViewHeight= bounds.height();
Run Code Online (Sandbox Code Playgroud)
所以输出是
1)"Hello World"返回字体15的高度13
2)"Jelly Bean的最新版本在这里,性能优化"返回字体15的高度16
然后我试过了
Paint paint = new Paint();
paint.setTextSize(15);
paint.setTypeface(Typeface.SANS_SERIF);
paint.setColor(Color.BLACK);
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), result);
Paint.FontMetrics metrics = brush.getFontMetrics();
int totalHeight = (int) (metrics.descent - metrics.ascent + metrics.leading);
Run Code Online (Sandbox Code Playgroud)
所以输出是
1)"Hello World"返回字体15的高度17
2)"最新版本的Jelly Bean在这里,性能优化"返回字体15的高度17
如果我将这些值设置为我的视图然后剪切一些文本,它不会显示所有内容.
在某些桌子上它看起来还不错,因为它有很大的宽度而不是在手机上.
有没有办法根据内容计算高度?
我试图在活动之间传递LinkedHashMap,我的代码是这样的
活动A.
LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
// setting data in map
Bundle bundle = new Bundle();
bundle.putSerializable("OBJECTS_LINKED_HASHMAP", mLinkedHashMap);
Intent intent = new Intent(this, ActivityB.class);
intent.putExtras(bundle);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
在Activity中,当我收到bundle对象时,我收到"Class cast exception"错误消息
活动B.
Bundle bundle = this.getIntent().getExtras();
LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
mLinkedHashMap = (LinkedHashMap<String, Object>) bundle.getSerializable("OBJECTS_LINKED_HASHMAP");
Run Code Online (Sandbox Code Playgroud)
获得类强制转换异常
ClassCastException: java.util.HashMap cannot be cast to LinkedHashMap
Run Code Online (Sandbox Code Playgroud)
我检查了文档LinkedHashMap也实现了Serializable接口.
我正在使用LinkedHashMap,因为我想维护对象顺序,他们按顺序插入我想要的方式.
如何在活动之间传递LinkedHashMap?
我只使用一个项目来移植Lite和完整版本,我只是更新Manifest文件包名称.
我的项目结构是这样的
我的应用程序
| _src
| _com.example.myapp
| _MyClass.java
和我的清单包名称不同.
包= "com.example.myapplite"
我正在使用一个库项目,因为我想要在MyApp中使用的类的包名.
我用过这个
System.out.println("Package Name " + context.getPackageName());
Run Code Online (Sandbox Code Playgroud)
但它给我一个清单文件包名称值即.com.example.myapplite
我想要MyClass.java包名.即.com.example.myapp
我也知道这一点
MyClass mClass = new MyClass();
Package pack = mClass.getClass().getPackage();
Run Code Online (Sandbox Code Playgroud)
但是我不能使用这种方法,因为我使用以下方法来获取我的库项目中的类文件
Class c = Class.forName("package_name.MyClass");
Run Code Online (Sandbox Code Playgroud)
如何通过编程方式获取MyClass.java文件的包名?
在Google Play中,我上传了手机,7英寸和10英寸平板电脑的屏幕截图.我知道它会选择最适合用户设备的屏幕截图,它将根据用户设备订购,我已经尝试过,并且所有设备都能正常工作.
但是网店怎么样?(https://play.google.com/)为什么它总是先显示10英寸平板电脑的截图?
在网上商店我想先显示手机屏幕截图然后7英寸和10英寸平板电脑,有什么办法把所有这些截图按特定顺序?
我从上个月开始在亚马逊Kindle Fire上测试应用程序.我曾使用这些步骤连接Kindle Fire进行开发
如何连接Kindle Fire进行开发? 一切都很好.
现在我已经升级了我的ADT(16.0.1)和SDK,之后我的点燃火没有与Eclipse连接.此外,更新ADT后,"adb_usb.ini"文件(位于〜/ .android /中)不存在于此位置.
请告知如何使用Eclipse连接kindle fire.
提前致谢.
我在我的应用程序中实现了应用程序购买我已经使用"TrivialDrive"示例进行应用内结算的第3版,我已经使用静态响应测试了应用程序,所有工作都按预期工作.
但是当我从市场下载应用程序时,应用程序在成功购买时崩溃,
我的代码是成功购买的
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure()) {
complain("Error purchasing: " + result);
}
if (purchase != null) {
if (purchase.getSku().equals(Constants.IN_APP_PURCHASE_PRODUCT_ID)) {
// bought the premium upgrade!
String message = getResources().getString(R.string.app_purchase_successful_msg);
mIsPremium = true;
updateUi(mIsPremium);
successAlert(message);
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
我成功购买时设置了消息,但是当我成功购买时,我看不到这条消息(意味着那些linse没有执行),应用程序在成功付款后崩溃了.
当重新启动应用程序并尝试购买它说已购买的项目.
我从开发者控制台获得了崩溃报告.
02-09 02:01:13.181: E/AndroidRuntime(11530): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=10001, result=-1, data=Intent { (has extras) …Run Code Online (Sandbox Code Playgroud) 目前我正在为三星galaxy tab开发Android应用程序.我正在使用三星在ADT第三方附加组件中提供的默认三星Galaxy Tab模拟器.
但是当我运行模拟器时,它不适合我的显示器屏幕.我无法看到全尺寸模拟器,我只能看到半尺寸模拟器.我的显示器分辨率为1600x900.要查看完整大小的模拟器,我需要扩展模拟器.
是他们通过滚动或其他东西检查全尺寸模拟器的任何方式.或者看看全尺寸模拟器需要什么样的屏幕分辨率?
我试图获得在4.2上运行的Nexus 7的实际屏幕宽度和高度.
我正在根据设备宽度和高度进行一些运行时计算,以调整按钮和一些UI元素的大小,因此它在所有设备中看起来都很合适.我的代码在所有SDK 4.1及更低版本中都运行良好,但不适用于4.2.
我使用以下代码来获取宽度和高度.
代码:1
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
mWidth = displaymetrics.widthPixels;
mHeight = displaymetrics.heightPixels;
Run Code Online (Sandbox Code Playgroud)
代码:2
Point size = new Point();
WindowManager w = getWindowManager();
w.getDefaultDisplay().getSize(size);
mWidth = size.x;
mHeight = size.y;
Run Code Online (Sandbox Code Playgroud)
我也尝试过无证方法
代码:3
Display display = getWindowManager().getDefaultDisplay();
Method mGetRawW = Display.class.getMethod("getRawWidth");
Method mGetRawH = Display.class.getMethod("getRawHeight");
mWidth = (Integer) mGetRawW.invoke(display);
mHeight = (Integer) mGetRawH.invoke(display);
Run Code Online (Sandbox Code Playgroud)
但是上面没有一个是在4.2上运行Nexus 7,它总是减去状态栏的高度,我没有达到全高.
我已经使用了一些方法来计算状态球棒高度但没有得到正确的值,
int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density);
Run Code Online (Sandbox Code Playgroud)
和
Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
Run Code Online (Sandbox Code Playgroud)
有没有标准的方法来获得实际的设备屏幕高度和宽度?
我有一个类ApplicationDetails,使用getter和setter方法.
public class ApplicationDetails {
String supportURL;
String companyURL;
String copyRightText;
// with getter and setter methods
}
Run Code Online (Sandbox Code Playgroud)
我在启动画面活动中设置所有数据.
ApplicationDetails appDetails = new ApplicationDetails();
String supportURL = getResources().getString(R.string.support_url);
appDetails.setSupportURL(supportURL);
Run Code Online (Sandbox Code Playgroud)
对于示例我只是从字符串文件设置数据,但在应用程序中它来自不同的来源.
但是当我尝试访问不同活动中的数据时,它返回null值.例如
public class AboutViewController extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ApplicationDetails appDetails = new ApplicationDetails();
System.out.println(" app support url " + appDetails.getSupportURL());
}
}
Run Code Online (Sandbox Code Playgroud)
产量
I/System.out(2242): app support url null
Run Code Online (Sandbox Code Playgroud)
任何帮助.
android ×9
java ×4
google-play ×2
amazon ×1
android-view ×1
class ×1
getter ×1
kindle-fire ×1
screenshot ×1
setter ×1
textview ×1