相关疑难解决方法(0)

5676
推荐指数
33
解决办法
121万
查看次数

将像素转换为dp

我创建了我的应用程序,其高度和宽度以像素为单位,用于分辨率为480x800的Pantech设备.

我需要转换G1设备的高度和宽度.我认为将其转换为dp将解决问题,并为两种设备提供相同的解决方案.

有没有简单的方法将像素转换为dp?有什么建议?

android resolution pixel dpi

789
推荐指数
26
解决办法
64万
查看次数

公式px到dp,dp到px android

我试图计算可变数量的像素到密度独立像素,反之亦然.

此公式(px to dp): dp = (int)(px / (displayMetrics.densityDpi / 160));不适用于小型设备,因为它除以零.

这是我的dp to px公式:

px = (int)(dp * (displayMetrics.densityDpi / 160));
Run Code Online (Sandbox Code Playgroud)

有人可以给我一些指示吗?

android formula density-independent-pixel

145
推荐指数
8
解决办法
16万
查看次数

如何为Paint.setTextSize()设置单位

是否可以更改单位Paint.setTextSize()?据我所知,它是像素,但我喜欢在DIP中设置文本大小以支持多屏幕.

java android view

55
推荐指数
3
解决办法
4万
查看次数

将像素转换为sp

我需要在当前TextSizeTextViewsp单位.

但是getTextSize()返回大小pixels.那有办法convert pixels to sp吗?

android textview

53
推荐指数
3
解决办法
6万
查看次数

如何在Android中使用dimens.xml?

当我设计布局时,由于可维护性的主题,我集中了dimens.xml中的所有维度.我的问题是,这是否正确.什么是最好的做法?关于此的信息非常少,没什么.我知道在strings.xml上集中布局的所有字符串,colors.xml上的颜色是个好主意.但关于尺寸?

例如:

<TableLayout
    android:id="@+id/history_detail_rows_submitted"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/cebroker_history_detail_rows_border"
    android:collapseColumns="*">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/history_detail_rows_margin_vertical"
        android:background="@color/cebroker_history_detail_rows_background"
        android:gravity="center"
        android:paddingBottom="@dimen/history_detail_rows_padding_vertical"
        android:paddingLeft="@dimen/history_detail_rows_padding_horizontal"
        android:paddingRight="@dimen/history_detail_rows_padding_horizontal"
        android:paddingTop="@dimen/history_detail_rows_padding_vertical">

        <TextView
            android:layout_width="match_parent"
            android:drawableLeft="@mipmap/ic_history_detail_submitted_by"
            android:drawablePadding="@dimen/history_detail_rows_textviews_padding_drawable"
            android:gravity="left|center"
            android:paddingRight="@dimen/history_detail_rows_textviews_padding"
            android:text="@string/history_detail_textview_submitted_by"
            android:textColor="@color/cebroker_history_detail_rows_textviews"
            android:textSize="@dimen/history_detail_rows_textviews_text_size" />
Run Code Online (Sandbox Code Playgroud)

android android-layout

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

如何从java代码中读取自定义维度属性

我制作了自定义组件,只是将几个TextView放在一起.现在我希望能够直接从代码启动我的自定义控件,为每个电视独立传递文本大小

我的属性定义:

<resources>
    <declare-styleable name="BasicGauge">
        <attr name="valueTextSize" format="dimension" />
        <attr name="titleTextSize" format="dimension" />
        <attr name="unitsTextSize" format="dimension" />
    </declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)

组件的示例初始化:

<pl.com.digita.BikeComputerUi.customviews.BasicGauge
    android:id="@+id/basicGauge1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:padding="10dp"
    valueTextSize="40sp">

</pl.com.digita.BikeComputerUi.customviews.BasicGauge>
Run Code Online (Sandbox Code Playgroud)

我如何尝试在组件的构造函数中读取这些属性:

final int N = typedArray.getIndexCount();
for (int i = 0; i < N; i++) {
    int attribute = typedArray.getIndex(i);
    switch (attribute) {
        case R.styleable.BasicGauge_valueTextSize:
            valueTextSize = typedArray.getString(attribute);
            break;
        case R.styleable.BasicGauge_titleTextSize:
            titleTextSize = typedArray.getString(attribute);
            break;
        case R.styleable.BasicGauge_unitsTextSize:
            unitsTextSize = typedArray.getString(attribute);
            break;
    }
    typedArray.recycle();
}
Run Code Online (Sandbox Code Playgroud)

问题: 创建后,我的所有值仍为空.40sp正是我想要的值.

android android-layout android-resources

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

访问AttributeSet中的attrs以获取自定义组件

我有一个包含两个TextView的自定义组件,它们具有自定义大小设置方法(两个文本视图的比例约为1:2).由于这是RelativeLayout的子类,它没有textSize属性,但我想知道是否仍然可以android:textSize在该组件的XML实例化中设置该属性,然后textSize从AttributeSet中获取属性以使用setSize()在构造函数中使用我的自定义方法.

我已经看到了使用自定义属性执行此操作的技术,但是如果我想获取已经在android词典中的属性怎么办?

java android textview android-relativelayout

20
推荐指数
1
解决办法
2万
查看次数

何时应该在Android中使用dimens.xml文件?

例如,在特定的布局中,我有以下XML:

<GridView
    android:id="@+id/gridView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="3dp"
    android:columnWidth="48dp"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="spacingWidth" />
Run Code Online (Sandbox Code Playgroud)

此网格视图特定于此布局,我不认为我将使用具有类似属性的任何其他网格视图.这就是说代码中的维度值特定于该网格视图.

我是否应该将它们移动到dimens.xml文件中,或者将它们留下来就可以了?如果是这样,仅当在多个布局中使用该值时,我是否应该在dimens.xml文件中放置值?

android dimensions android-layout

18
推荐指数
3
解决办法
1万
查看次数

onMeasure():wrap_content,我怎么知道要包装的大小?

我已经创建了一个自定义视图,onDraw()覆盖了画布上的位图.当我在布局文件中指定我想要它wrap_content时,它仍然会填满整个屏幕.onMeasure()这样说:

measure的基类实现默认为背景大小,除非允许更大的大小MeasureSpec.子类应覆盖onMeasure(int,int)以提供更好的内容测量.

好酷,所以我知道我需要覆盖onMeasure()和使用MeasureSpec.根据这个答案

unex表示layout_width或layout_height值设置为wrap_content.你可以任意大小.

现在我遇到了我的问题,我如何onMeasure()测量我尚未创建的位图并测量/包装它?我知道其他Android视图必须做一些事情,因为如果设置为wrap_content,它们不会阻挡整个屏幕.提前致谢!

android view custom-component

14
推荐指数
2
解决办法
1万
查看次数

AdMob如何确定何时分配SMART_BANNER大小

我有与包括布局的活动AdViewads:adSize="SMART_BANNER"。它位于屏幕底部,在custom下方WebView。现在,WebView具有基于可用空间(像素尺寸)呈现的内容。因此,在渲染WebView内容之前,我需要知道SMART_BANNER将要占据的大小(尤其是高度),以及因此需要保留的大小WebView。从这里它指出,智能旗帜的高度可以是中的任何一个32dp50dp90dp

据我所知,我需要等待AdView决定格式之后才能呈现WebView。我怎样才能做到这一点?也许通过设置AdListener?然而,该方法AdListener似乎只是让我来决定,例如当一个广告被加载中...我不希望有等待广告加载,我只是想等待广告的实际大小被分配。

我知道我可以通过将设置AdViewBANNER,并将高度固定为来避免所有这些情况50dp,并且确实可以正常工作。但是我更喜欢SMART_BANNER主要是因为高度可以缩小到32dp小手机屏幕上的横向模式,从而为实际内容留出更多空间。

android admob

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

在android上以编程方式将sp转换为像素

我需要在 Android 中以编程方式将可缩放像素 (sp) 转换为像素。我已经知道如何将 dp 转换为像素,但是如何将 sp 转换为像素?

android pixels android-studio

-3
推荐指数
1
解决办法
3748
查看次数