扩展自定义布局 class - 从未使用过的构造函数
Extending a custom layout class - Constructor never used
我正在使用给定的 GifWebView here
我知道 Main Activity 等工作正常,因为我在 XML 中实施框架布局之前对其进行了测试。但是现在我在使用Frame Layout时遇到了问题
我将只为您提供我的代码和快速解释:
XML
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.example.dencallanan.giftestapp.GifWebView
android:id="@+id/GWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" 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">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_marginBottom="153dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:hint="USERNAME" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_marginTop="58dp"
android:layout_alignTop="@+id/editText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText"
android:hint="PASSWORD" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log In"
android:id="@+id/button"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp" />
</RelativeLayout>
</FrameLayout>
GifWebView
public class GifWebView extends WebView {
public GifWebView(Context context, String path) {
super(context);
loadUrl(path);
}
public GifWebView(Context context, AttributeSet attrs, String path) {
super(context, attrs);
}
public GifWebView(Context context, AttributeSet attrs, int defStyle, String path) {
super(context, attrs, defStyle);
}
}
我想我的问题出在这里。我在网上看到我应该添加上面看到的第二个两个构造函数方法。但似乎第一个是唯一被使用的,即 - 第二个两个构造函数发出警告 methods never used
.
也许我错了,但据说您需要这些构造函数来实现 XML 中的布局 class,而这些构造函数从未被使用过...为什么?
以下两行在我的 MainActivity 中,只是为了帮助您了解发生了什么。
gWView = (GifWebView) findViewById(R.id.GWebView);
gWView = new GifWebView(this, "file:///android_asset/watg.gif");
如果能提供任何帮助,我将不胜感激,这个问题已经困扰我好几个小时了。
问题
Android 屏幕上没有任何显示...只是一片空白
为黑带编辑
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.example.dencallanan.giftestapp.GifWebView
android:id="@+id/GWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
myapp:fpath="watg" <!-- also tried "watg.gif" -->
/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" 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">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_marginBottom="153dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:hint="USERNAME" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_marginTop="58dp"
android:layout_alignTop="@+id/editText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText"
android:hint="PASSWORD" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log In"
android:id="@+id/button"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp" />
</RelativeLayout>
</FrameLayout>
attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="GifWebView">
<attr name="fpath" format="string" />
</declare-styleable>
</resources>
GifWebView.java
public class GifWebView extends WebView {
public GifWebView(Context context) {
super(context);
}
public GifWebView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.GifWebView);
CharSequence s = a.getString(R.styleable.GifWebView_fpath);
loadUrl(s.toString());
}
public GifWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.GifWebView);
CharSequence s = a.getString(R.styleable.GifWebView_fpath);
loadUrl(s.toString());
}
}
您不应该重载视图的构造函数。使用
public GifWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
和
public GifWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
并以编程方式提供非默认参数,或为您的自定义 View
定义自定义属性
我正在使用给定的 GifWebView here
我知道 Main Activity 等工作正常,因为我在 XML 中实施框架布局之前对其进行了测试。但是现在我在使用Frame Layout时遇到了问题
我将只为您提供我的代码和快速解释:
XML
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.example.dencallanan.giftestapp.GifWebView
android:id="@+id/GWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" 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">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_marginBottom="153dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:hint="USERNAME" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_marginTop="58dp"
android:layout_alignTop="@+id/editText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText"
android:hint="PASSWORD" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log In"
android:id="@+id/button"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp" />
</RelativeLayout>
</FrameLayout>
GifWebView
public class GifWebView extends WebView {
public GifWebView(Context context, String path) {
super(context);
loadUrl(path);
}
public GifWebView(Context context, AttributeSet attrs, String path) {
super(context, attrs);
}
public GifWebView(Context context, AttributeSet attrs, int defStyle, String path) {
super(context, attrs, defStyle);
}
}
我想我的问题出在这里。我在网上看到我应该添加上面看到的第二个两个构造函数方法。但似乎第一个是唯一被使用的,即 - 第二个两个构造函数发出警告 methods never used
.
也许我错了,但据说您需要这些构造函数来实现 XML 中的布局 class,而这些构造函数从未被使用过...为什么?
以下两行在我的 MainActivity 中,只是为了帮助您了解发生了什么。
gWView = (GifWebView) findViewById(R.id.GWebView);
gWView = new GifWebView(this, "file:///android_asset/watg.gif");
如果能提供任何帮助,我将不胜感激,这个问题已经困扰我好几个小时了。
问题
Android 屏幕上没有任何显示...只是一片空白
为黑带编辑
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.example.dencallanan.giftestapp.GifWebView
android:id="@+id/GWebView"
android:layout_width="match_parent"
android:layout_height="match_parent"
myapp:fpath="watg" <!-- also tried "watg.gif" -->
/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" 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">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_marginBottom="153dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:hint="USERNAME" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_marginTop="58dp"
android:layout_alignTop="@+id/editText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText"
android:hint="PASSWORD" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log In"
android:id="@+id/button"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp" />
</RelativeLayout>
</FrameLayout>
attrs.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="GifWebView">
<attr name="fpath" format="string" />
</declare-styleable>
</resources>
GifWebView.java
public class GifWebView extends WebView {
public GifWebView(Context context) {
super(context);
}
public GifWebView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.GifWebView);
CharSequence s = a.getString(R.styleable.GifWebView_fpath);
loadUrl(s.toString());
}
public GifWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.GifWebView);
CharSequence s = a.getString(R.styleable.GifWebView_fpath);
loadUrl(s.toString());
}
}
您不应该重载视图的构造函数。使用
public GifWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
和
public GifWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
并以编程方式提供非默认参数,或为您的自定义 View