通过布局上定义的 ID 获取视图
Getting views by ID defined on layout
我正在做我的第一个 Android 项目,这让我有点发疯。我正在开发一款适用于所有分辨率的平板电脑和智能手机的应用程序。我已经创建了一个自定义布局,现在它非常适合平板电脑,但是当它进入智能手机时它会变得混乱。所以我问 google 并找到了一篇关于如何缩放视图的有趣论文:http://www.vanteon.com/downloads/Scaling_Android_Apps_White_Paper.pdf
我已经按照所有步骤操作,但是当我尝试调用
scaleContents(View rootView, View container)
我收到一条错误消息,告诉我我的 IDs don't exist
.
这是我的布局 xml 文件(部分):
FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="1200px"
android:layout_height="1700px"
android:layout_gravity="center"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="@drawable/background"
android:id="@+id/SussoClient"
这就是我调用方法的方式:
LayoutScaler ls = new LayoutScaler();
ls.scaleContents(findViewById(android.R.id.content), findViewById(android.R.id.container));
它说 Cannot resolve symbol 'container'
,那么,我应该在哪里定义该 ID 才能执行此操作?在我尝试重新缩放布局的所有解决方案中,这个看起来最好。
提前致谢
您应该在 xml 文件中定义所有尺寸,而不是使用 LayoutScaler,该文件对于智能手机和平板电脑是不同的。
就像 vilpe89 说的那样,将 android.R.id.content
更改为 R.id.content
并且 R 将是 your_package.R
,您必须导入而不是 import android.R"
您是否尝试过使用 dp
而不是 px
。在你分享的白皮书中有提到,也是我比较喜欢使用的方式,在不同的屏幕上通常不会造成太大的伤害。
试一试,看看会发生什么。
希望对您有所帮助!
我正在做我的第一个 Android 项目,这让我有点发疯。我正在开发一款适用于所有分辨率的平板电脑和智能手机的应用程序。我已经创建了一个自定义布局,现在它非常适合平板电脑,但是当它进入智能手机时它会变得混乱。所以我问 google 并找到了一篇关于如何缩放视图的有趣论文:http://www.vanteon.com/downloads/Scaling_Android_Apps_White_Paper.pdf
我已经按照所有步骤操作,但是当我尝试调用
scaleContents(View rootView, View container)
我收到一条错误消息,告诉我我的 IDs don't exist
.
这是我的布局 xml 文件(部分):
FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="1200px"
android:layout_height="1700px"
android:layout_gravity="center"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:background="@drawable/background"
android:id="@+id/SussoClient"
这就是我调用方法的方式:
LayoutScaler ls = new LayoutScaler();
ls.scaleContents(findViewById(android.R.id.content), findViewById(android.R.id.container));
它说 Cannot resolve symbol 'container'
,那么,我应该在哪里定义该 ID 才能执行此操作?在我尝试重新缩放布局的所有解决方案中,这个看起来最好。
提前致谢
您应该在 xml 文件中定义所有尺寸,而不是使用 LayoutScaler,该文件对于智能手机和平板电脑是不同的。
就像 vilpe89 说的那样,将 android.R.id.content
更改为 R.id.content
并且 R 将是 your_package.R
,您必须导入而不是 import android.R"
您是否尝试过使用 dp
而不是 px
。在你分享的白皮书中有提到,也是我比较喜欢使用的方式,在不同的屏幕上通常不会造成太大的伤害。
试一试,看看会发生什么。
希望对您有所帮助!