按布局上定义的ID获取视图

时间:2015-01-09 12:58:08

标签: android xml android-layout findviewbyid

我正在做我的第一个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?在我试图重新调整布局的所有解决方案中,这个看起来最好。

提前致谢

3 个答案:

答案 0 :(得分:0)

您应该在xml文件中定义智能手机和平板电脑不同的尺寸,而不是使用LayoutScaler。

答案 1 :(得分:0)

就像vilpe89所说的那样,将android.R.id.content更改为R.id.content,R将是your_package.R,您必须导入import android.R"

答案 2 :(得分:0)

您是否尝试过使用dp代替px。在您分享的白皮书中提到它,也是我喜欢使用的方式,它通常不会对不同的屏幕造成太大的伤害。

试试看,发生了什么。

希望这有帮助!