我通过在线性布局中分配权重来为视图分配空格。可以看到textView的高度是(屏幕的高度* 5)/ 12。
布局的xml文件如下 -
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.greenloop.numbers.Counting_Ten"
android:orientation="vertical"
tools:ignore="MergeRootFrame"
android:background="#FFA500">
<RelativeLayout android:id="@+id/rel_number_fragment"
android:layout_weight="5"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#800000">
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:clickable="true"
android:onClick="onClick"
android:background="#800080"/>
</RelativeLayout>
<FrameLayout
android:id="@+id/image_frame"
android:layout_weight="6"
android:layout_width="match_parent"
android:layout_height="0dp">
</FrameLayout>
<fragment android:name="com.example.Navigation_Buttons"
android:id="@+id/button_fragment"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp"/>
</LinearLayout>
我已将java文件中的textsize设置为
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screen_height = displaymetrics.heightPixels;
text_size = (int) (((screen_height*5.0)/12.0));
textview.setTextSize(TypedValue.COMPLEX_UNIT_PX,text_size);
现在问题 - :我在手机上运行了这一切,一切都很好。文本大小与文本视图一样大。但是当我在一个10&#34;的GENYMOTION模拟器上运行相同的东西时。 Logcat显示的平板电脑和Nexus 5 - 字体太大,无法容纳缓存。宽度,高度= 175,527。我无法弄清楚这一点。可以归结为字体样式的不同吗?
答案 0 :(得分:0)
任何android视图参数都是设备的 dpi 和 px 之间的关系,而不仅仅是px,所以,由于 dpi的差异强大>不同设备之间的值,有时需要导出width
和height
的返回值以匹配此关系,例如 Nexus 设备通常具有 dpi 320 的,以及您测试代码的其他设备可能是 160 或 240 ,因此,您必须将检索到的width
和height
转换为dip
,这样您才能拥有相同的比率处理不同的设备,这通过以下公式发生:
// getting it regularly like you do
int screen_height = displaymetrics.heightPixels;
// convert the value
Resources res = getResources();
int new_screen_height = (int)(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, screen_height, res.getDisplayMetrics()));
// then do whatever you want with the new_screen_height
有关更多信息,请参阅this answer,其中声明dpi会影响像素大小。
答案 1 :(得分:0)
最后我解决了这个问题。
机器人:layout_height =&#34; WRAP_CONTENT&#34;而不是match_parent
并添加此 - &gt;
textview.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
问题解决了