Android计量单位有什么区别?
user-interface android units-of-measurement dimension android-layout
我想按原样加载值.我有两个dimension.xml文件,一个在/res/values/dimension.xml,另一个在/res/values-sw360dp/dimension.xml.
从源代码我想做的事情
getResources().getDimension(R.dimen.tutorial_cross_marginTop);
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我获得的值乘以屏幕密度系数(hdpi为1.5,xhdpi为2.0等).
我也试过
getResources().getString(R.dimen.tutorial_cross_marginTop);
Run Code Online (Sandbox Code Playgroud)
这原则上可行,但我得到一个以"dip"结尾的字符串......
在官方文档似乎并没有回答这个问题,或者我不明白.
元素(没关系AlertDialog,它也发生在任何TextView上):
TextView tv = (TextView) dialog.findViewById(android.R.id.message);
Run Code Online (Sandbox Code Playgroud)
不一致性.案例A:
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
// or tv.setTextSize(14); does the same
Run Code Online (Sandbox Code Playgroud)
案例B:
tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.
Run Code Online (Sandbox Code Playgroud)
values/dimens.xml它在哪里:
<dimen name="text_size_small">14sp</dimen>
Run Code Online (Sandbox Code Playgroud)
结果:字体大小不一样,从资源检索时显得更大.我可能错过了什么,所以我的错误是什么,最重要的是:为什么?
- 更新到第一个答案 -
固定数字只是一个例子,因为没有人会在代码中硬编码固定的字体大小.那么让我重新解释一下这个问题:
为什么如果从代码中获取资源,文本大小比从XML布局获取资源时要大?此外,问题仍然是相同的:如何在代码中检索14sp单元并使其与布局XML中设置的14sp单元保持一致?我没有接受答案,因为它没有告诉我如何在代码中使用资源中的sp单位来处理文本大小.
在此布局上,即使尺寸相同,字体大小也不同:
<TextView
android:id="@+id/my_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextBody" />
Run Code Online (Sandbox Code Playgroud)
styles.xml:
<style name="TextBody">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:lineSpacingMultiplier">1.1</item>
<item name="android:textColor">@color/body_text_1</item>
<item name="android:textIsSelectable">true</item>
<item name="android:linksClickable">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
看到text_size_small吗?为什么在这种情况下字体大小比使用相同dimen资源的代码小?
可能重复:
最佳地聚类一维数据?
所以,假设我有一个这样的数组:
[1,1,2,3,10,11,13,67,71]
Run Code Online (Sandbox Code Playgroud)
有没有一种方便的方法将数组分区为这样的东西?
[[1,1,2,3],[10,11,13],[67,71]]
Run Code Online (Sandbox Code Playgroud)
我查看了类似的问题,但是大多数人建议使用k-means来聚集点,比如scipy,这对像我这样的初学者来说非常混乱.另外我认为k-means更适合两维或更多维聚类吧?有没有办法根据数字将N个数组分组到多个分区/聚类?
有些人还提出了严格的范围分区,但并不总是按预期呈现结果
arrays cluster-analysis data-mining dimension partition-problem
文件说160 dp(密度无关)等于1英寸.72磅也是1英寸.所以我不明白为什么android定义一个dp测量,而它似乎与点相同.任何人都可以解释一下吗?如果我可以使用pt,为什么要使用dp?
基于XML属性部分,我在下面指定了以下内容dimens.xml:
<dimen name="match_parent">-1dp</dimen>
<dimen name="main_left_menu_user_account_width">@dimen/match_parent</dimen>
<dimen name="main_left_menu_user_account_height">@dimen/match_parent</dimen>
Run Code Online (Sandbox Code Playgroud)
然后我在布局中使用这两个维度:
<ImageView
android:id="@+id/userAccountImage"
android:background="@drawable/user_account"
android:layout_width="@dimen/main_left_menu_user_account_width"
android:layout_height="@dimen/main_left_menu_user_account_height" />
Run Code Online (Sandbox Code Playgroud)
然后,当我预览到时Graphical Layout,它会抱怨:
您必须提供layout_width属性.
您必须提供layout_height属性.
实际上我可以定义一个等于match_parent的值dimens.xml吗?
更新:
我也试过了,但预览仍然抱怨:
<dimen name="main_left_menu_user_account_width">-1dp</dimen>
<dimen name="main_left_menu_user_account_height">-1dp</dimen>
Run Code Online (Sandbox Code Playgroud)
我成功使用wrap_content(Graphical Layout根本没有抱怨):
<dimen name="wrap_content">-2dp</dimen>
<dimen name="main_right_menu_width">@dimen/wrap_content</dimen>
<dimen name="main_right_menu_height">@dimen/wrap_content</dimen>
Run Code Online (Sandbox Code Playgroud) 如何在不裁剪的情况下看到矩形选框的选区大小?在paint.net中非常容易,但我必须在photoshop cs 5.在选择区域时,我应该能够看到所选区域的尺寸.我怎样才能做到这一点 ?
此外,当我选择具有矩形选框的区域时,我想要看到该区域的位置或者至少我需要能够看到像素位置.位置意味着它在图像中的位置像顶部55px左45px谢谢.
Adobe Photoshop CS 5
有没有办法在不渲染实际元素的情况下估算文本宽度?像canvas TextMetrics这样的东西?
案例:我需要估算ReactList的元素高度.要做到这一点,我需要大致知道文本元素需要多少空间(或者它们将跨越多少行).
例如.
render(){
return <div><SomeComponentWithKnownDims/><p>{this.props.someText}</p></div>;
}
Run Code Online (Sandbox Code Playgroud)
如果我知道someText会被渲染到一条线上有多宽以及线条的长度,我可以很容易地得出一个合适的元件高度估计值.
编辑:请注意,这是非常重要的性能,不应该触及DOM
我想将我的表格设置为300*300,不包括标题和边框.
如果我使用Size属性,它确实包含这些值.
有什么方法可以做到吗?
我正在研究一个片段,我想得到一个layout包含在其中的维度xml fragment layout.当我尝试代码时
RelativeLayout myLayout = view.findViewById(R.id.myLayout);
myLayout.getHeight();
Run Code Online (Sandbox Code Playgroud)
它返回0.我需要将这些尺寸放入myLayout其他对象中.
我尝试使用:
myLayout.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
mHeight = myLayout.getHeight();
mWidth= myLayout.getWidth();
System.out.println("width: "+mWidth+" height: "+mHeight);
}
});
Run Code Online (Sandbox Code Playgroud)
但是这段代码调用了很多时间,我不确切知道它何时执行.我需要将这些尺寸转化为 public void onActivityCreated ()方法.可能吗?