我正在创建一个Android应用程序,我正在创建图形。但是,我的LinearLayout不占用整个屏幕,切断了一些需要显示的单词。例如,是显示的内容。我的xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context="com.example.root.layouts.Main">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="y"
android:gravity="center_horizontal"
android:id="@+id/years"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=":"
android:gravity="center_horizontal"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="m"
android:gravity="center_horizontal"
android:id="@+id/months"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=":"
android:gravity="center_horizontal"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="w"
android:gravity="center_horizontal"
android:id="@+id/weeks"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=":"
android:gravity="center_horizontal"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="d"
android:gravity="center_horizontal"
android:id="@+id/days"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=":"
android:gravity="center_horizontal"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="h"
android:gravity="center_horizontal"
android:id="@+id/hours"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=":"
android:gravity="center_horizontal"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="m"
android:gravity="center_horizontal"
android:id="@+id/minutes"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=":"
android:gravity="center_horizontal"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="s"
android:gravity="center_horizontal"
android:id="@+id/seconds"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<!-- I think this is where the problem starts -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Years"
android:rotation="270"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Months"
android:rotation="270"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Weeks"
android:rotation="270"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Days"
android:rotation="270"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Hours"
android:rotation="270"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Minutes"
android:rotation="270"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Seconds"
android:rotation="270"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
这大部分可能不相关,但我想确保我包含所需的全部内容。任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:0)
问题在于您拥有的许多嵌套LinearLayouts的高度。根视图的高度应为:android:height="match_parent"
以填充屏幕。拥有这么多嵌套的LinearLayouts对性能也有害。看看其他一些ViewGroup类(FrameLayout,RelativeLayout等)应该可以让你更有效地实现你想要的UI。 Android ViewGroup Reference
答案 1 :(得分:0)
#1。您可能不需要所有这些视图。您当然不需要将每段文本都包含在自己的LinearLayout
中。到目前为止,你需要的最多是
<LinearLayout
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<!-- more textviews with same layout params -->
</LinearLayout>
<LinearLayout
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<!-- more textviews with same layout params -->
</LinearLayout>
</LinearLayout>
如果您使用GridLayout
之类的内容,则可以对此进行更优化。
#2。很多人误解了android:rotation
的作用。它只会影响视图的绘制方式;它不会影响视图测量和布局的方式。问题是你的TextView
被测量和布局,好像文本没有旋转,然后文本被旋转,所以文本被切断了。
我不知道任何简单的解决方案。我唯一的想法是扩展TextView
并覆盖onMeasure()
来做一些像这样的hacky:
@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) {
// swap the measure specs
super.onMeasure(heightMeasureSpec, widthMeasureSpec);
// swap the resulting measured dimensions
setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
}
我不知道这会有多好用;事实上,我几乎可以保证它会有错误(一方面,你的左右填充将被视为顶部和底部填充,反之亦然),但它应该说明这一点。您可以尝试在线查找可以向上和向下绘制文本的TextView
的更好实现。