Я новичок в разработке Android, и в настоящее время мне это очень нравится.
Я создаю пользовательский интерфейс, используя XML файл, и нашел довольно простой сбор статического интерфейса.
Теперь мне нужно создать пользовательский интерфейс, в котором одна из позиций TextView изменяется во время выполнения.
Можно ли это сделать только с использованием XML?
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_height="wrap_content"
android:text="0%"
android:layout_width="wrap_content"
android:id="@+id/percent"
android:textSize="15sp"
android:layout_x="41dip"
android:layout_y="295dip">
</TextView>
</AbsoluteLayout>
Теперь я могу позиционировать TextView где угодно, изменяя значение layout_x
и layout_y
. Но как это сделать во время выполнения?
Я пробовал это:
TextView text;
text=(TextView)findViewById(R.id.percent);
Выполнение text.setText("This can be done");
легко изменит текст во время выполнения, но как я могу изменить позицию из кода?
Если вы попробуете это с помощью абсолютного макета, посмотрите на следующий код.
main.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:text="@string/hello"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_alignParentRight="true">
</TextView>
<EditText
android:hint="xcor"
android:layout_height="wrap_content"
android:id="@+id/xcor"
android:background="@drawable/select"
android:layout_x="165dip"
android:layout_width="wrap_content"
android:layout_y="64dip">
</EditText>
<EditText
android:hint="ycor"
android:layout_height="wrap_content"
android:id="@+id/ycor"
android:layout_x="168dip"
android:layout_width="wrap_content"
android:layout_y="168dip">
</EditText>
<Button
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="Set Position"
android:layout_x="218dip"
android:layout_width="wrap_content"
android:layout_y="278dip"
android:background="@drawable/select"
>
</Button>
</AbsoluteLayout>
CustomPosition.java
public class CustomPosition extends Activity {
/** Called when the activity is first created. */
LayoutParams params = new LayoutParams(MarginLayoutParams.WRAP_CONTENT, MarginLayoutParams.WRAP_CONTENT, 150, 50);
TextView text;
EditText xcor;
EditText ycor;
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text=(TextView)findViewById(R.id.textView1);
xcor=(EditText)findViewById(R.id.xcor);
ycor=(EditText)findViewById(R.id.ycor);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
params.x=Integer.parseInt(xcor.getText().toString());
params.y=Integer.parseInt(ycor.getText().toString());
text.setLayoutParams(params);
}
});
}
}
Во-первых, абсолютный макет устарел, вместо этого используйте относительный макет, Frame-Layout.
Затем используйте
LayoutParams params = new LayoutParams( MarginLayoutParams.WRAP_CONTENT, MarginLayoutParams.WRAP_CONTENT);
Если вас попросят импортировать, используйте импортированные выбранные шаблоны компоновки.
После этого используйте
params.leftmargin
или
params.rightmargin
для изменения положения.