小编Mac*_*Mac的帖子

如何根据设备宽度和字体大小测量TextView高度?

我在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

如果我将这些值设置为我的视图然后剪切一些文本,它不会显示所有内容.

在某些桌子上它看起来还不错,因为它有很大的宽度而不是在手机上.

有没有办法根据内容计算高度?

android textview android-layout android-canvas android-view

21
推荐指数
3
解决办法
2万
查看次数

Android如何在活动之间传递LinkedHashMap?

我试图在活动之间传递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?

java android android-intent android-activity

16
推荐指数
1
解决办法
6482
查看次数

如何在Android中获取源类文件的包名?

我只使用一个项目来移植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文件的包名?

java android class package-managers android-library

10
推荐指数
2
解决办法
4万
查看次数

如何在Google Play上重新排列屏幕截图

在Google Play中,我上传了手机,7英寸和10英寸平板电脑的屏幕截图.我知道它会选择最适合用户设备的屏幕截图,它将根据用户设备订购,我已经尝试过,并且所有设备都能正常工作.

但是网店怎么样?(https://play.google.com/)为什么它总是先显示10英寸平板电脑的截图?

在网上商店我想先显示手机屏幕截图然后7英寸和10英寸平板电脑,有什么办法把所有这些截图按特定顺序?

android screenshot google-play

7
推荐指数
1
解决办法
340
查看次数

如何在Mac上使用Eclipse在Amazon Kindle Fire上调试应用程序?

可能重复:
在kindle fire上调试android应用程序

我从上个月开始在亚马逊Kindle Fire上测试应用程序.我曾使用这些步骤连接Kindle Fire进行开发

如何连接Kindle Fire进行开发? 一切都很好.

现在我已经升级了我的ADT(16.0.1)和SDK,之后我的点燃火没有与Eclipse连接.此外,更新ADT后,"adb_usb.ini"文件(位于〜/ .android /中)不存在于此位置.

请告知如何使用Eclipse连接kindle fire.

提前致谢.

android amazon kindle-fire

6
推荐指数
1
解决办法
5295
查看次数

Android应用内购买在付款后崩溃

我在我的应用程序中实现了应用程序购买我已经使用"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)

android in-app-purchase in-app-billing google-play

6
推荐指数
1
解决办法
3884
查看次数

如何在全尺寸下看三星galaxy Tab Emulator?

目前我正在为三星galaxy tab开发Android应用程序.我正在使用三星在ADT第三方附加组件中提供的默认三星Galaxy Tab模拟器.

但是当我运行模拟器时,它不适合我的显示器屏幕.我无法看到全尺寸模拟器,我只能看到半尺寸模拟器.我的显示器分辨率为1600x900.要查看完整大小的模拟器,我需要扩展模拟器.

是他们通过滚动或其他东西检查全尺寸模拟器的任何方式.或者看看全尺寸模拟器需要什么样的屏幕分辨率?

android android-emulator

5
推荐指数
1
解决办法
9628
查看次数

如何获取设备原始宽度和高度或实际屏幕宽度和高度?

我试图获得在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)

有没有标准的方法来获得实际的设备屏幕高度和宽度?

java android android-emulator android-layout

5
推荐指数
1
解决办法
3778
查看次数

Android getter setter返回null数据?

我有一个类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)

任何帮助.

java getter setter android getter-setter

1
推荐指数
1
解决办法
3671
查看次数