XML-атрибуты и соответствующие им методы

1

Я новичок в разработке 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"); легко изменит текст во время выполнения, но как я могу изменить позицию из кода?

Теги:

2 ответа

0
Лучший ответ

Если вы попробуете это с помощью абсолютного макета, посмотрите на следующий код.

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);
            }
        });
    }
}
0

Во-первых, абсолютный макет устарел, вместо этого используйте относительный макет, Frame-Layout.

Затем используйте

LayoutParams params = new LayoutParams( MarginLayoutParams.WRAP_CONTENT, MarginLayoutParams.WRAP_CONTENT);

Если вас попросят импортировать, используйте импортированные выбранные шаблоны компоновки.

После этого используйте

params.leftmargin 

или

params.rightmargin

для изменения положения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню