Código de ejemplo que extiende la clase View y el uso del archivo xml de diseño
Soy nuevo en el mundo de Android …. será de gran ayuda si alguien me corrige … ¿qué estoy haciendo mal el código a continuación …
- Requisito: Necesidad de crear una vista personalizada (utilizando archivo de diseño xml) para que la misma vista se debe utilizar dentro de mis actividades de aplicación. Aquí voy con el código de la muestra que estoy trabajando,
Cutomviewxml.xml
- ¿Debo llamar a super () o llamar a esto () para los constructores de vista personalizada de Android?
- Cómo utilizar Path (android.graphics.Path) con lienzo en android?
- Android - Canvas.clipRect () - Eliminar el clip existente
- Dos barras de acción (abajo y arriba) al mismo tiempo?
- Rellenar lista de vista personalizada mediante ListFragment
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>
Clase de vista extendida … código …
MycustomTextview.java
public class mycustomTextview extends View { private View mView; Context mycontext; public mycustomTextview(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub this.mycontext = context; LayoutInflater inflater; inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mView = inflater.inflate(R.layout.cutomviewxml, null); }
Actividad archivo main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.motorola.mycustomTextview android:id="@+id/customtextview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/textView2" android:layout_marginLeft="143dp" android:layout_marginTop="69dp" android:layout_toRightOf="@+id/textView1" /> </RelativeLayout>
Clase de actividad sample.java ..
public class sample extends Activity{ private static final String LOG_TAG = "sampleActivity"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(LOG_TAG,"OnCreate of sampleActivity"); setContentView(R.layout.main); } }
- Canvas.drawArc () artefactos
- Crear subviews de Android como subvisiones de iOS
- Rectángulo efecto de rizo sin límites
- Lona transparente para Android con transparencia
- El lienzo no dibuja en Vista personalizada
- ¿El editor de diseño de Android Studio muestra propiedades de vista personalizada?
- Establecer valor de enum en xml del recurso
- SherlockActionBar: Cómo ajustar CustomView contra actionBar
Creo que usted ha hecho un pequeño error en mycustomTextview
, cuando infle su diseño que tiene que pasar ViewGroup también, puede utilizar esta línea
mView = inflater.inflate(R.layout.cutomviewxml, this);
Para obtener acceso a las vistas dentro de la vista personalizada, invalide el método onFinishInflate () y utilice findViewById (). Para el problema en cuestión la solución será la siguiente.
public class mycustomTextview extends LinearLayout { Context mycontext; private TextView textView1; public mycustomTextview(Context context, AttributeSet attrs) { super(context, attrs); this.mycontext = context; } @Override protected void onFinishInflate() { textView1=(TextView) findViewById(R.id.textView1); } }
Use esto en su xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <yourpackagename.viewclassname android:id="@+id/myView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></yourpackagename.viewclassname> </LinearLayout>
public class ExampleView extends FrameLayout { ImageView mImage; public ExampleView(Context context) { super(context); init(context); } public void init(Context context) { View view = inflate(context, R.layout.my_view_layout,this); view.findViewById(R.id.image) } }
- Dagger 2 componentes no generados al usar Jack
- Android-opencv conversión mat a escala de grises con el uso de matToBitmap / bitmapToMat